Coverity-updates archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

New Defects reported by Coverity Scan for NetBSD-i386-kernel



Hi,

Please find the latest report on new defect(s) introduced to NetBSD-i386-kernel found with Coverity Scan.

39 new defect(s) introduced to NetBSD-i386-kernel found with Coverity Scan.
1250 defect(s), reported by Coverity Scan earlier, were marked fixed in the recent build analyzed by Coverity Scan.

New defect(s) Reported-by: Coverity Scan
Showing 20 of 39 defect(s)


** CID 270538:    (NULL_RETURNS)
/usr.bin/make/suff.c: 1909 in SuffFindArchiveDeps()
/usr.bin/make/suff.c: 1909 in SuffFindArchiveDeps()
/usr.bin/make/suff.c: 1911 in SuffFindArchiveDeps()


________________________________________________________________________________________________________
*** CID 270538:    (NULL_RETURNS)
/usr.bin/make/suff.c: 1909 in SuffFindArchiveDeps()
1903     
1904         /*
1905          * The node is an archive(member) pair. so we must find a
1906          * suffix for both of them.
1907          */
1908         eoarch = strchr(gn->name, '(');
>>>     CID 270538:    (NULL_RETURNS)
>>>     Dereferencing a pointer that might be null "eoarch" when calling "strchr".
1909         eoname = strchr(eoarch, ')');
1910     
1911         *eoname = '\0';	  /* Nuke parentheses during suffix search */
1912         *eoarch = '\0';	  /* So a suffix can be found */
1913     
1914         name = eoarch + 1;
/usr.bin/make/suff.c: 1909 in SuffFindArchiveDeps()
1903     
1904         /*
1905          * The node is an archive(member) pair. so we must find a
1906          * suffix for both of them.
1907          */
1908         eoarch = strchr(gn->name, '(');
>>>     CID 270538:    (NULL_RETURNS)
>>>     Dereferencing a pointer that might be null "eoarch" when calling "strchr".
1909         eoname = strchr(eoarch, ')');
1910     
1911         *eoname = '\0';	  /* Nuke parentheses during suffix search */
1912         *eoarch = '\0';	  /* So a suffix can be found */
1913     
1914         name = eoarch + 1;
/usr.bin/make/suff.c: 1911 in SuffFindArchiveDeps()
1905          * The node is an archive(member) pair. so we must find a
1906          * suffix for both of them.
1907          */
1908         eoarch = strchr(gn->name, '(');
1909         eoname = strchr(eoarch, ')');
1910     
>>>     CID 270538:    (NULL_RETURNS)
>>>     Dereferencing a null pointer "eoname".
1911         *eoname = '\0';	  /* Nuke parentheses during suffix search */
1912         *eoarch = '\0';	  /* So a suffix can be found */
1913     
1914         name = eoarch + 1;
1915     
1916         /*

** CID 974621:  Memory - corruptions  (BAD_FREE)
/usr.bin/make/var.c: 3677 in ApplyModifiers()


________________________________________________________________________________________________________
*** CID 974621:  Memory - corruptions  (BAD_FREE)
/usr.bin/make/var.c: 3677 in ApplyModifiers()
3671     	    fprintf(debug_file, "Result[%s] of :%c is \"%s\"\n",
3672     		v->name, modifier, newStr);
3673     	}
3674     
3675     	if (newStr != nstr) {
3676     	    if (*freePtr) {
>>>     CID 974621:  Memory - corruptions  (BAD_FREE)
>>>     "free" frees incorrect pointer "nstr".
3677     		free(nstr);
3678     		*freePtr = NULL;
3679     	    }
3680     	    nstr = newStr;
3681     	    if (nstr != var_Error && nstr != varNoError) {
3682     		*freePtr = nstr;

** CID 975275:    (CHECKED_RETURN)
/usr.bin/make/arch.c: 912 in ArchFindMember()
/usr.bin/make/arch.c: 942 in ArchFindMember()
/usr.bin/make/arch.c: 945 in ArchFindMember()
/usr.bin/make/arch.c: 960 in ArchFindMember()


________________________________________________________________________________________________________
*** CID 975275:    (CHECKED_RETURN)
/usr.bin/make/arch.c: 912 in ArchFindMember()
906     		 * To make life easier, we reposition the file at the start
907     		 * of the header we just read before we return the stream.
908     		 * In a more general situation, it might be better to leave
909     		 * the file at the actual member, rather than its header, but
910     		 * not here...
911     		 */
>>>     CID 975275:    (CHECKED_RETURN)
>>>     Calling "fseek(arch, -60L, 1)" without checking return value. This library function may fail and return an error code.
912     		fseek(arch, -sizeof(struct ar_hdr), SEEK_CUR);
913     		return (arch);
914     	    }
915     	} else
916     #ifdef AR_EFMT1
917     		/*
/usr.bin/make/arch.c: 942 in ArchFindMember()
936     		ename[elen] = '\0';
937     		if (DEBUG(ARCH) || DEBUG(MAKE)) {
938     		    fprintf(debug_file, "ArchFind: Extended format entry for %s\n", ename);
939     		}
940     		if (strncmp(ename, member, len) == 0) {
941     			/* Found as extended name */
>>>     CID 975275:    (CHECKED_RETURN)
>>>     Calling "fseek(arch, 4294967236U - elen, 1)" without checking return value. This library function may fail and return an error code.
942     			fseek(arch, -sizeof(struct ar_hdr) - elen, SEEK_CUR);
943     			return (arch);
944     		}
945     		fseek(arch, -elen, SEEK_CUR);
946     		goto skip;
947     	} else
/usr.bin/make/arch.c: 945 in ArchFindMember()
939     		}
940     		if (strncmp(ename, member, len) == 0) {
941     			/* Found as extended name */
942     			fseek(arch, -sizeof(struct ar_hdr) - elen, SEEK_CUR);
943     			return (arch);
944     		}
>>>     CID 975275:    (CHECKED_RETURN)
>>>     Calling "fseek(arch, -elen, 1)" without checking return value. This library function may fail and return an error code.
945     		fseek(arch, -elen, SEEK_CUR);
946     		goto skip;
947     	} else
948     #endif
949     	{
950     skip:
/usr.bin/make/arch.c: 960 in ArchFindMember()
954     	     * padded with newlines to an even-byte boundary, so we need to
955     	     * extract the size of the file from the 'size' field of the
956     	     * header and round it up during the seek.
957     	     */
958     	    arhPtr->ar_size[sizeof(arhPtr->ar_size)-1] = '\0';
959     	    size = (int)strtol(arhPtr->ar_size, NULL, 10);
>>>     CID 975275:    (CHECKED_RETURN)
>>>     Calling "fseek(arch, size + 1 & 0xfffffffffffffffe, 1)" without checking return value. This library function may fail and return an error code.
960     	    fseek(arch, (size + 1) & ~1, SEEK_CUR);
961     	}
962         }
963     
964         /*
965          * We've looked everywhere, but the member is not to be found. Close the

** CID 975276:    (CHECKED_RETURN)
/usr.bin/make/arch.c: 682 in ArchStatMember()
/usr.bin/make/arch.c: 693 in ArchStatMember()


________________________________________________________________________________________________________
*** CID 975276:    (CHECKED_RETURN)
/usr.bin/make/arch.c: 682 in ArchStatMember()
676     
677     		if (elen > MAXPATHLEN)
678     			goto badarch;
679     		if (fread(memName, elen, 1, arch) != 1)
680     			goto badarch;
681     		memName[elen] = '\0';
>>>     CID 975276:    (CHECKED_RETURN)
>>>     Calling "fseek(arch, -elen, 1)" without checking return value. This library function may fail and return an error code.
682     		fseek(arch, -elen, SEEK_CUR);
683     		if (DEBUG(ARCH) || DEBUG(MAKE)) {
684     		    fprintf(debug_file, "ArchStat: Extended format entry for %s\n", memName);
685     		}
686     	    }
687     #endif
/usr.bin/make/arch.c: 693 in ArchStatMember()
687     #endif
688     
689     	    he = Hash_CreateEntry(&ar->members, memName, NULL);
690     	    Hash_SetValue(he, bmake_malloc(sizeof(struct ar_hdr)));
691     	    memcpy(Hash_GetValue(he), &arh, sizeof(struct ar_hdr));
692     	}
>>>     CID 975276:    (CHECKED_RETURN)
>>>     Calling "fseek(arch, size + 1 & 0xfffffffffffffffe, 1)" without checking return value. This library function may fail and return an error code.
693     	fseek(arch, (size + 1) & ~1, SEEK_CUR);
694         }
695     
696         fclose(arch);
697     
698         (void)Lst_AtEnd(archives, ar);

** CID 975277:  Error handling issues  (CHECKED_RETURN)
/usr.bin/make/job.c: 438 in JobCreatePipe()


________________________________________________________________________________________________________
*** CID 975277:  Error handling issues  (CHECKED_RETURN)
/usr.bin/make/job.c: 438 in JobCreatePipe()
432         /*
433          * We mark the input side of the pipe non-blocking; we poll(2) the
434          * pipe when we're waiting for a job token, but we might lose the
435          * race for the token when a new one becomes available, so the read 
436          * from the pipe should not block.
437          */
>>>     CID 975277:  Error handling issues  (CHECKED_RETURN)
>>>     Calling "fcntl(job->jobPipe[0], 4, fcntl(job->jobPipe[0], 3, 0) | 4)" without checking return value. This library function may fail and return an error code.
438         fcntl(job->jobPipe[0], F_SETFL, 
439     	fcntl(job->jobPipe[0], F_GETFL, 0) | O_NONBLOCK);
440     }
441     
442     /*-
443      *-----------------------------------------------------------------------

** CID 975278:    (CHECKED_RETURN)
/usr.bin/make/job.c: 1375 in JobExec()
/usr.bin/make/job.c: 1376 in JobExec()


________________________________________________________________________________________________________
*** CID 975278:    (CHECKED_RETURN)
/usr.bin/make/job.c: 1375 in JobExec()
1369     	(void)lseek(0, (off_t)0, SEEK_SET);
1370     
1371     	if (job->node->type & (OP_MAKE | OP_SUBMAKE)) {
1372     		/*
1373     		 * Pass job token pipe to submakes.
1374     		 */
>>>     CID 975278:    (CHECKED_RETURN)
>>>     Calling "fcntl(tokenWaitJob.jobPipe[0], 2, 0)" without checking return value. This library function may fail and return an error code.
1375     		fcntl(tokenWaitJob.inPipe, F_SETFD, 0);
1376     		fcntl(tokenWaitJob.outPipe, F_SETFD, 0);		
1377     	}
1378     	
1379     	/*
1380     	 * Set up the child's output to be routed through the pipe
/usr.bin/make/job.c: 1376 in JobExec()
1370     
1371     	if (job->node->type & (OP_MAKE | OP_SUBMAKE)) {
1372     		/*
1373     		 * Pass job token pipe to submakes.
1374     		 */
1375     		fcntl(tokenWaitJob.inPipe, F_SETFD, 0);
>>>     CID 975278:    (CHECKED_RETURN)
>>>     Calling "fcntl(tokenWaitJob.jobPipe[1], 2, 0)" without checking return value. This library function may fail and return an error code.
1376     		fcntl(tokenWaitJob.outPipe, F_SETFD, 0);		
1377     	}
1378     	
1379     	/*
1380     	 * Set up the child's output to be routed through the pipe
1381     	 * we've created for it.

** CID 975995:  Control flow issues  (DEADCODE)
/usr.bin/make/cond.c: 1178 in Cond_EvalExpression()


________________________________________________________________________________________________________
*** CID 975995:  Control flow issues  (DEADCODE)
/usr.bin/make/cond.c: 1178 in Cond_EvalExpression()
1172     	for (info = ifs; ; info++)
1173     	    if (info->form[0] == 0)
1174     		break;
1175     	dflt_info = info;
1176         }
1177     
>>>     CID 975995:  Control flow issues  (DEADCODE)
>>>     Execution cannot reach the expression "&ifs[4]" inside this statement: "if_info = ((info != NULL) ?...".
1178         if_info = info != NULL ? info : ifs + 4;
1179         condExpr = line;
1180         condPushBack = TOK_NONE;
1181     
1182         rval = do_Cond_EvalExpression(value);
1183     

** CID 977428:  Memory - illegal accesses  (OVERRUN)
/usr.bin/make/parse.c: 554 in loadfile()


________________________________________________________________________________________________________
*** CID 977428:  Memory - illegal accesses  (OVERRUN)
/usr.bin/make/parse.c: 554 in loadfile()
548     	while (1) {
549     		assert(bufpos <= lf->len);
550     		if (bufpos == lf->len) {
551     			lf->len *= 2;
552     			lf->buf = bmake_realloc(lf->buf, lf->len);
553     		}
>>>     CID 977428:  Memory - illegal accesses  (OVERRUN)
>>>     Overrunning dynamic array "lf->buf" at offset corresponding to index variable "bufpos" through dereference in call to "read".
554     		result = read(fd, lf->buf + bufpos, lf->len - bufpos);
555     		if (result < 0) {
556     			Error("%s: read error: %s", path, strerror(errno));
557     			exit(1);
558     		}
559     		if (result == 0) {

** CID 977502:  Incorrect expression  (PW.ASSIGN_WHERE_COMPARE_MEANT)
/usr.bin/make/for.c: 430 in ()


________________________________________________________________________________________________________
*** CID 977502:  Incorrect expression  (PW.ASSIGN_WHERE_COMPARE_MEANT)
/usr.bin/make/for.c: 430 in ()
424         cmd_cp = Buf_GetAll(&arg->buf, &len);
425         body_end = cmd_cp + len;
426         Buf_Init(&cmds, len + 256);
427         for (cp = cmd_cp; (cp = strchr(cp, '$')) != NULL;) {
428     	char ech;
429     	ch = *++cp;
>>>     CID 977502:  Incorrect expression  (PW.ASSIGN_WHERE_COMPARE_MEANT)
>>>     use of "=" where "==" may have been intended
430     	if ((ch == '(' && (ech = ')')) || (ch == '{' && (ech = '}'))) {
431     	    cp++;
432     	    /* Check variable name against the .for loop variables */
433     	    STRLIST_FOREACH(var, &arg->vars, i) {
434     		len = strlist_info(&arg->vars, i);
435     		if (memcmp(cp, var, len) != 0)

** CID 977503:  Incorrect expression  (PW.ASSIGN_WHERE_COMPARE_MEANT)
/usr.bin/make/for.c: 430 in ()


________________________________________________________________________________________________________
*** CID 977503:  Incorrect expression  (PW.ASSIGN_WHERE_COMPARE_MEANT)
/usr.bin/make/for.c: 430 in ()
424         cmd_cp = Buf_GetAll(&arg->buf, &len);
425         body_end = cmd_cp + len;
426         Buf_Init(&cmds, len + 256);
427         for (cp = cmd_cp; (cp = strchr(cp, '$')) != NULL;) {
428     	char ech;
429     	ch = *++cp;
>>>     CID 977503:  Incorrect expression  (PW.ASSIGN_WHERE_COMPARE_MEANT)
>>>     use of "=" where "==" may have been intended
430     	if ((ch == '(' && (ech = ')')) || (ch == '{' && (ech = '}'))) {
431     	    cp++;
432     	    /* Check variable name against the .for loop variables */
433     	    STRLIST_FOREACH(var, &arg->vars, i) {
434     		len = strlist_info(&arg->vars, i);
435     		if (memcmp(cp, var, len) != 0)

** CID 978364:  Resource leaks  (RESOURCE_LEAK)
/usr.bin/make/dir.c: 1319 in Dir_FindFile()


________________________________________________________________________________________________________
*** CID 978364:  Resource leaks  (RESOURCE_LEAK)
/usr.bin/make/dir.c: 1319 in Dir_FindFile()
1313     	 */
1314     	if (DEBUG(DIR)) {
1315     	    fprintf(debug_file, "   Trying exact path matches...\n");
1316     	}
1317     
1318     	if (!hasLastDot && cur && (file = DirLookupAbs(cur, name, cp)) != NULL)
>>>     CID 978364:  Resource leaks  (RESOURCE_LEAK)
>>>     Variable "file" going out of scope leaks the storage it points to.
1319     	    return *file?file:NULL;
1320     
1321     	(void)Lst_Open(path);
1322     	while ((ln = Lst_Next(path)) != NULL) {
1323     	    p = (Path *)Lst_Datum(ln);
1324     	    if (p == dotLast)

** CID 978365:  Resource leaks  (RESOURCE_LEAK)
/usr.bin/make/dir.c: 1581 in Dir_MTime()


________________________________________________________________________________________________________
*** CID 978365:  Resource leaks  (RESOURCE_LEAK)
/usr.bin/make/dir.c: 1581 in Dir_MTime()
1575     
1576         if (fullName && gn->path == NULL) {
1577     	gn->path = fullName;
1578         }
1579     
1580         gn->mtime = stb.st_mtime;
>>>     CID 978365:  Resource leaks  (RESOURCE_LEAK)
>>>     Variable "fullName" going out of scope leaks the storage it points to.
1581         return (gn->mtime);
1582     }
1583     
1584     /*-
1585      *-----------------------------------------------------------------------
1586      * Dir_AddDir --

** CID 978366:  Resource leaks  (RESOURCE_LEAK)
/usr.bin/make/job.c: 741 in JobPrintCommand()


________________________________________________________________________________________________________
*** CID 978366:  Resource leaks  (RESOURCE_LEAK)
/usr.bin/make/job.c: 741 in JobPrintCommand()
735     	    if (noSpecials) {
736     		/*
737     		 * We're not actually executing anything...
738     		 * but this one needs to be - use compat mode just for it.
739     		 */
740     		CompatRunCommand(cmdp, job->node);
>>>     CID 978366:  Resource leaks  (RESOURCE_LEAK)
>>>     Variable "cmdStart" going out of scope leaks the storage it points to.
741     		return 0;
742     	    }
743     	    break;
744     	}
745     	cmd++;
746         }

** CID 978367:    (RESOURCE_LEAK)
/usr.bin/make/lst.lib/lstDupl.c: 93 in Lst_Duplicate()
/usr.bin/make/lst.lib/lstDupl.c: 96 in Lst_Duplicate()


________________________________________________________________________________________________________
*** CID 978367:    (RESOURCE_LEAK)
/usr.bin/make/lst.lib/lstDupl.c: 93 in Lst_Duplicate()
87         }
88     
89         ln = list->firstPtr;
90         while (ln != NULL) {
91     	if (copyProc != NULL) {
92     	    if (Lst_AtEnd(nl, copyProc(ln->datum)) == FAILURE) {
>>>     CID 978367:    (RESOURCE_LEAK)
>>>     Variable "nl" going out of scope leaks the storage it points to.
93     		return NULL;
94     	    }
95     	} else if (Lst_AtEnd(nl, ln->datum) == FAILURE) {
96     	    return NULL;
97     	}
98     
/usr.bin/make/lst.lib/lstDupl.c: 96 in Lst_Duplicate()
90         while (ln != NULL) {
91     	if (copyProc != NULL) {
92     	    if (Lst_AtEnd(nl, copyProc(ln->datum)) == FAILURE) {
93     		return NULL;
94     	    }
95     	} else if (Lst_AtEnd(nl, ln->datum) == FAILURE) {
>>>     CID 978367:    (RESOURCE_LEAK)
>>>     Variable "nl" going out of scope leaks the storage it points to.
96     	    return NULL;
97     	}
98     
99     	if (list->isCirc && ln == list->lastPtr) {
100     	    ln = NULL;
101     	} else {

** CID 978369:    (RESOURCE_LEAK)
/usr.bin/make/parse.c: 1738 in ParseDoDependency()
/usr.bin/make/parse.c: 1738 in ParseDoDependency()


________________________________________________________________________________________________________
*** CID 978369:    (RESOURCE_LEAK)
/usr.bin/make/parse.c: 1738 in ParseDoDependency()
1732     	Lst_ForEach(targets, ParseFindMain, NULL);
1733         }
1734     
1735     out:
1736         if (curTargs)
1737     	    Lst_Destroy(curTargs, NULL);
>>>     CID 978369:    (RESOURCE_LEAK)
>>>     Variable "paths" going out of scope leaks the storage it points to.
1738     }
1739     
1740     /*-
1741      *---------------------------------------------------------------------
1742      * Parse_IsVar  --
1743      *	Return TRUE if the passed line is a variable assignment. A variable
/usr.bin/make/parse.c: 1738 in ParseDoDependency()
1732     	Lst_ForEach(targets, ParseFindMain, NULL);
1733         }
1734     
1735     out:
1736         if (curTargs)
1737     	    Lst_Destroy(curTargs, NULL);
>>>     CID 978369:    (RESOURCE_LEAK)
>>>     Variable "paths" going out of scope leaks the storage it points to.
1738     }
1739     
1740     /*-
1741      *---------------------------------------------------------------------
1742      * Parse_IsVar  --
1743      *	Return TRUE if the passed line is a variable assignment. A variable

** CID 978370:  Resource leaks  (RESOURCE_LEAK)
/usr.bin/make/parse.c: 2604 in ParseGmakeExport()


________________________________________________________________________________________________________
*** CID 978370:  Resource leaks  (RESOURCE_LEAK)
/usr.bin/make/parse.c: 2604 in ParseGmakeExport()
2598     
2599         /*
2600          * Expand the value before putting it in the environment.
2601          */
2602         value = Var_Subst(NULL, value, VAR_CMD, VARF_WANTRES);
2603         setenv(variable, value, 1);
>>>     CID 978370:  Resource leaks  (RESOURCE_LEAK)
>>>     Variable "value" going out of scope leaks the storage it points to.
2604     }
2605     #endif
2606     
2607     /*-
2608      *---------------------------------------------------------------------
2609      * ParseEOF  --

** CID 978371:  Resource leaks  (RESOURCE_LEAK)
/usr.bin/make/parse.c: 2539 in ParseTraditionalInclude()


________________________________________________________________________________________________________
*** CID 978371:  Resource leaks  (RESOURCE_LEAK)
/usr.bin/make/parse.c: 2539 in ParseTraditionalInclude()
2533          */
2534         all_files = Var_Subst(NULL, file, VAR_CMD, VARF_WANTRES);
2535     
2536         if (*file == '\0') {
2537     	Parse_Error(PARSE_FATAL,
2538     		     "Filename missing from \"include\"");
>>>     CID 978371:  Resource leaks  (RESOURCE_LEAK)
>>>     Variable "all_files" going out of scope leaks the storage it points to.
2539     	return;
2540         }
2541     
2542         for (file = all_files; !done; file = cp + 1) {
2543     	/* Skip to end of line or next whitespace */
2544     	for (cp = file; *cp && !isspace((unsigned char) *cp); cp++)

** CID 978372:  Resource leaks  (RESOURCE_LEAK)
/usr.bin/make/var.c: 1843 in VarLoopExpand()


________________________________________________________________________________________________________
*** CID 978372:  Resource leaks  (RESOURCE_LEAK)
/usr.bin/make/var.c: 1843 in VarLoopExpand()
1837                     Buf_AddByte(buf, ' ');
1838                 Buf_AddBytes(buf, (slen = strlen(s)), s);
1839                 addSpace = (slen > 0 && s[slen - 1] != '\n');
1840                 free(s);
1841             }
1842         }
>>>     CID 978372:  Resource leaks  (RESOURCE_LEAK)
>>>     Variable "s" going out of scope leaks the storage it points to.
1843         return addSpace;
1844     }
1845     
1846     
1847     /*-
1848      *-----------------------------------------------------------------------

** CID 978373:    (RESOURCE_LEAK)
/usr.bin/make/var.c: 629 in Var_Export1()
/usr.bin/make/var.c: 640 in Var_Export1()
/usr.bin/make/var.c: 647 in Var_Export1()
/usr.bin/make/var.c: 669 in Var_Export1()


________________________________________________________________________________________________________
*** CID 978373:    (RESOURCE_LEAK)
/usr.bin/make/var.c: 629 in Var_Export1()
623         v = VarFind(name, VAR_GLOBAL, 0);
624         if (v == NULL) {
625     	return 0;
626         }
627         if (!parent &&
628     	(v->flags & (VAR_EXPORTED|VAR_REEXPORT)) == VAR_EXPORTED) {
>>>     CID 978373:    (RESOURCE_LEAK)
>>>     Variable "v" going out of scope leaks the storage it points to.
629     	return 0;			/* nothing to do */
630         }
631         val = Buf_GetAll(&v->val, NULL);
632         if ((flags & VAR_EXPORT_LITERAL) == 0 && strchr(val, '$')) {
633     	if (parent) {
634     	    /*
/usr.bin/make/var.c: 640 in Var_Export1()
634     	    /*
635     	     * Flag this as something we need to re-export.
636     	     * No point actually exporting it now though,
637     	     * the child can do it at the last minute.
638     	     */
639     	    v->flags |= (VAR_EXPORTED|VAR_REEXPORT);
>>>     CID 978373:    (RESOURCE_LEAK)
>>>     Variable "v" going out of scope leaks the storage it points to.
640     	    return 1;
641     	}
642     	if (v->flags & VAR_IN_USE) {
643     	    /*
644     	     * We recursed while exporting in a child.
645     	     * This isn't going to end well, just skip it.
/usr.bin/make/var.c: 647 in Var_Export1()
641     	}
642     	if (v->flags & VAR_IN_USE) {
643     	    /*
644     	     * We recursed while exporting in a child.
645     	     * This isn't going to end well, just skip it.
646     	     */
>>>     CID 978373:    (RESOURCE_LEAK)
>>>     Variable "v" going out of scope leaks the storage it points to.
647     	    return 0;
648     	}
649     	n = snprintf(tmp, sizeof(tmp), "${%s}", name);
650     	if (n < (int)sizeof(tmp)) {
651     	    val = Var_Subst(NULL, tmp, VAR_GLOBAL, VARF_WANTRES);
652     	    setenv(name, val, 1);
/usr.bin/make/var.c: 669 in Var_Export1()
663         /*
664          * This is so Var_Set knows to call Var_Export again...
665          */
666         if (parent) {
667     	v->flags |= VAR_EXPORTED;
668         }
>>>     CID 978373:    (RESOURCE_LEAK)
>>>     Variable "v" going out of scope leaks the storage it points to.
669         return 1;
670     }
671     
672     /*
673      * This gets called from our children.
674      */

** CID 978374:    (RESOURCE_LEAK)
/usr.bin/make/var.c: 864 in Var_UnExport()
/usr.bin/make/var.c: 894 in Var_UnExport()


________________________________________________________________________________________________________
*** CID 978374:    (RESOURCE_LEAK)
/usr.bin/make/var.c: 864 in Var_UnExport()
858     	char *as;
859     	int ac;
860     	int i;
861     
862     	av = brk_string(vlist, &ac, FALSE, &as);
863     	for (i = 0; i < ac; i++) {
>>>     CID 978374:    (RESOURCE_LEAK)
>>>     Overwriting "v" in "v = VarFind(av[i], VAR_GLOBAL, 0)" leaks the storage that "v" points to.
864     	    v = VarFind(av[i], VAR_GLOBAL, 0);
865     	    if (!v)
866     		continue;
867     	    if (!unexport_env &&
868     		(v->flags & (VAR_EXPORTED|VAR_REEXPORT)) == VAR_EXPORTED) {
869     		unsetenv(v->name);
/usr.bin/make/var.c: 894 in Var_UnExport()
888     	free(as);
889     	free(av);
890     	if (vlist != str) {
891     	    Var_Delete(MAKE_EXPORTED, VAR_GLOBAL);
892     	    free(vlist);
893     	}
>>>     CID 978374:    (RESOURCE_LEAK)
>>>     Variable "v" going out of scope leaks the storage it points to.
894         }
895     }
896     
897     /*-
898      *-----------------------------------------------------------------------
899      * Var_Set --


________________________________________________________________________________________________________
To view the defects in Coverity Scan visit, https://u2389337.ct.sendgrid.net/wf/click?upn=08onrYu34A-2BWcWUl-2F-2BfV0V05UPxvVjWch-2Bd2MGckcRb2JZfDAOAZcqzsy8LMBKBjEGdxS-2FDDouPkeZ4HbDca3C30UoLW748TLKQM-2BXRpGRc-3D_XWm3CUIFU8ffmjzuNhQ8cIHoQgXzXkm61Fmjr59D05X0-2ByLFgjHqd3vKW45J5UJEMSQBVJNiXj-2Bsz4hCuGbsTUlP5l8P4CvH9vmG4fbs5VQT6BY3vIGm8iiHdDFr98zywXckS2GzNxi2H9wxSgCArAQNYSEx70JcMZnbgB9ij8ZWNPAKf8CVLCltwHe-2BzUwCRx-2F4AuuHKYawOZxjiQQRYQyuEqbVTSEY2733szttPJI-3D

To manage Coverity Scan email notifications for "coverity-updates%netbsd.org@localhost", click https://u2389337.ct.sendgrid.net/wf/click?upn=08onrYu34A-2BWcWUl-2F-2BfV0V05UPxvVjWch-2Bd2MGckcRbVDbis712qZDP-2FA8y06Nq4m7U7Yoel-2F6MYPxol7ToiLwYIjoNbVQOCAwEeTNJofEDwTlN0JRhKMyijhpnAObR-2FlLVG-2Fr3EBKWgiICNdX1HPA6Ws0-2F1wHBf2tG9AnMDB8g-3D_XWm3CUIFU8ffmjzuNhQ8cIHoQgXzXkm61Fmjr59D05X0-2ByLFgjHqd3vKW45J5UJEMSQBVJNiXj-2Bsz4hCuGbsTS5n7rTvZvT1vIDLC8TCkwxcmzJLrKGURMrpSUjNYsDDYqo0OcSz4VKMpqEpV6jFcmvJXaC-2ByacU78o8dZ8-2Fryb7C62ETA-2BOU8-2BCF6wU6XkWlk8Y7Eg3IMhX7-2FONj6LvmLph6i28ULmi9um6vQy4GRc-3D



Home | Main Index | Thread Index | Old Index