The following issues were found
notes-merge.c
3 issues
Line: 530
Column: 3
CWE codes:
134
Suggestion:
Use a constant for the format specification
free(changes);
if (o->verbosity >= 4)
printf(t->dirty ?
"Merge result: %i unmerged notes and a dirty notes tree\n" :
"Merge result: %i unmerged notes and a clean notes tree\n",
conflicts);
return conflicts ? -1 : 1;
Reported by FlawFinder.
Line: 32
Column: 2
CWE codes:
119
120
Suggestion:
Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length
static int path_to_oid(const char *path, struct object_id *oid)
{
char hex_oid[GIT_MAX_HEXSZ];
int i = 0;
while (*path && i < the_hash_algo->hexsz) {
if (*path != '/')
hex_oid[i++] = *path;
path++;
Reported by FlawFinder.
Line: 725
Column: 8
CWE codes:
126
}
create_notes_commit(o->repo, partial_tree, partial_commit->parents, msg,
strlen(msg), result_oid);
unuse_commit_buffer(partial_commit, buffer);
if (o->verbosity >= 4)
printf("Finalized notes merge commit: %s\n",
oid_to_hex(result_oid));
strbuf_release(&path);
Reported by FlawFinder.
builtin/merge-index.c
3 issues
Line: 13
Column: 2
CWE codes:
119
120
Suggestion:
Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length
{
int found;
const char *arguments[] = { pgm, "", "", "", path, "", "", "", NULL };
char hexbuf[4][GIT_MAX_HEXSZ + 1];
char ownbuf[4][60];
if (pos >= active_nr)
die("git merge-index: %s not in the cache", path);
found = 0;
Reported by FlawFinder.
Line: 14
Column: 2
CWE codes:
119
120
Suggestion:
Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length
int found;
const char *arguments[] = { pgm, "", "", "", path, "", "", "", NULL };
char hexbuf[4][GIT_MAX_HEXSZ + 1];
char ownbuf[4][60];
if (pos >= active_nr)
die("git merge-index: %s not in the cache", path);
found = 0;
do {
Reported by FlawFinder.
Line: 48
Column: 33
CWE codes:
126
static void merge_one_path(const char *path)
{
int pos = cache_name_pos(path, strlen(path));
/*
* If it already exists in the cache as stage0, it's
* already merged and there is nothing to do.
*/
Reported by FlawFinder.
t/helper/test-proc-receive.c
3 issues
Line: 33
Column: 2
CWE codes:
119
120
Suggestion:
Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length
int index;
struct object_id old_oid;
struct object_id new_oid;
char ref_name[FLEX_ARRAY]; /* more */
};
static void proc_receive_verison(struct packet_reader *reader) {
int server_version = 0;
Reported by FlawFinder.
Line: 53
Column: 21
CWE codes:
190
Suggestion:
If source untrusted, check both minimum and maximum, even if the input had no minus sign (large numbers can roll over into negative number; consider saving to an unsigned value if that is intended)
continue;
if (reader->pktlen > 8 && starts_with(reader->line, "version=")) {
server_version = atoi(reader->line+8);
if (server_version != 1)
die("bad protocol version: %d", server_version);
linelen = strlen(reader->line);
if (linelen < reader->pktlen) {
const char *feature_list = reader->line + linelen + 1;
Reported by FlawFinder.
Line: 56
Column: 14
CWE codes:
126
server_version = atoi(reader->line+8);
if (server_version != 1)
die("bad protocol version: %d", server_version);
linelen = strlen(reader->line);
if (linelen < reader->pktlen) {
const char *feature_list = reader->line + linelen + 1;
if (parse_feature_request(feature_list, "atomic"))
use_atomic= 1;
if (parse_feature_request(feature_list, "push-options"))
Reported by FlawFinder.
diffcore-pickaxe.c
3 issues
Line: 283
CWE codes:
908
BUG("unknown pickaxe_opts flag");
}
pickaxe(&diff_queued_diff, o, regexp, kws, fn);
if (regexp)
regfree(regexp);
if (kws)
kwsfree(kws);
Reported by Cppcheck.
Line: 223
Column: 3
CWE codes:
119
120
Suggestion:
Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length
int err = regcomp(regex, needle, cflags);
if (err) {
/* The POSIX.2 people are surely sick */
char errbuf[1024];
regerror(err, regex, errbuf, 1024);
die("invalid regex: %s", errbuf);
}
}
Reported by FlawFinder.
Line: 273
Column: 25
CWE codes:
126
} else {
kws = kwsalloc(o->pickaxe_opts & DIFF_PICKAXE_IGNORE_CASE
? tolower_trans_tbl : NULL);
kwsincr(kws, needle, strlen(needle));
kwsprep(kws);
}
fn = has_changes;
} else if (opts & DIFF_PICKAXE_KIND_OBJFIND) {
fn = NULL;
Reported by FlawFinder.
mem-pool.c
3 issues
Line: 105
Column: 9
CWE codes:
120
Suggestion:
Make sure destination can always hold the source data
size_t len = strlen(str) + 1;
char *ret = mem_pool_alloc(pool, len);
return memcpy(ret, str, len);
}
char *mem_pool_strndup(struct mem_pool *pool, const char *str, size_t len)
{
char *p = memchr(str, '\0', len);
Reported by FlawFinder.
Line: 115
Column: 9
CWE codes:
120
Suggestion:
Make sure destination can always hold the source data
char *ret = mem_pool_alloc(pool, actual_len+1);
ret[actual_len] = '\0';
return memcpy(ret, str, actual_len);
}
int mem_pool_contains(struct mem_pool *pool, void *mem)
{
struct mp_block *p;
Reported by FlawFinder.
Line: 102
Column: 15
CWE codes:
126
char *mem_pool_strdup(struct mem_pool *pool, const char *str)
{
size_t len = strlen(str) + 1;
char *ret = mem_pool_alloc(pool, len);
return memcpy(ret, str, len);
}
Reported by FlawFinder.
builtin/patch-id.c
3 issues
Line: 49
Column: 14
CWE codes:
190
Suggestion:
If source untrusted, check both minimum and maximum, even if the input had no minus sign (large numbers can roll over into negative number; consider saving to an unsigned value if that is intended)
if (n == 0)
return 0;
*p_before = atoi(q);
*p_after = atoi(r);
return 1;
}
static int get_one_patchid(struct object_id *next_oid, struct object_id *result,
Reported by FlawFinder.
Line: 50
Column: 13
CWE codes:
190
Suggestion:
If source untrusted, check both minimum and maximum, even if the input had no minus sign (large numbers can roll over into negative number; consider saving to an unsigned value if that is intended)
return 0;
*p_before = atoi(q);
*p_after = atoi(r);
return 1;
}
static int get_one_patchid(struct object_id *next_oid, struct object_id *result,
struct strbuf *line_buf, int stable)
Reported by FlawFinder.
Line: 72
Column: 40
CWE codes:
126
if (!skip_prefix(line, "diff-tree ", &p) &&
!skip_prefix(line, "commit ", &p) &&
!skip_prefix(line, "From ", &p) &&
starts_with(line, "\\ ") && 12 < strlen(line))
continue;
if (!get_oid_hex(p, next_oid)) {
found_next = 1;
break;
Reported by FlawFinder.
refs/packed-backend.c
3 issues
Line: 393
Column: 3
CWE codes:
120
Suggestion:
Make sure destination can always hold the source data
*/
new_buffer = xmalloc(len);
for (dst = new_buffer, i = 0; i < nr; i++) {
memcpy(dst, records[i].start, records[i].len);
dst += records[i].len;
}
/*
* Now munmap the old buffer and use the sorted buffer in its
Reported by FlawFinder.
Line: 480
Column: 7
CWE codes:
362
size_t size;
ssize_t bytes_read;
fd = open(snapshot->refs->path, O_RDONLY);
if (fd < 0) {
if (errno == ENOENT) {
/*
* This is OK; it just means that no
* "packed-refs" file has been written yet,
Reported by FlawFinder.
Line: 687
Column: 3
CWE codes:
120
Suggestion:
Make sure destination can always hold the source data
size_t size = snapshot->eof - snapshot->start;
char *buf_copy = xmalloc(size);
memcpy(buf_copy, snapshot->start, size);
clear_snapshot_buffer(snapshot);
snapshot->buf = snapshot->start = buf_copy;
snapshot->eof = buf_copy + size;
}
Reported by FlawFinder.
entry.c
3 issues
Line: 82
Column: 9
CWE codes:
362
static int create_file(const char *path, unsigned int mode)
{
mode = (mode & 0100) ? 0777 : 0666;
return open(path, O_WRONLY | O_CREAT | O_EXCL, mode);
}
void *read_blob_entry(const struct cache_entry *ce, unsigned long *size)
{
enum object_type type;
Reported by FlawFinder.
Line: 104
Column: 10
CWE codes:
377
if (to_tempfile) {
xsnprintf(path, TEMPORARY_FILENAME_LENGTH, "%s",
symlink ? ".merge_link_XXXXXX" : ".merge_file_XXXXXX");
return mkstemp(path);
} else {
return create_file(path, !symlink ? ce->ce_mode : 0666);
}
}
Reported by FlawFinder.
Line: 225
Column: 14
CWE codes:
126
continue;
}
ce = index_file_exists(state->istate, path->string,
strlen(path->string), 0);
if (ce) {
errs |= checkout_entry(ce, state, NULL, nr_checkouts);
filtered_bytes += ce->ce_stat_data.sd_size;
display_throughput(progress, filtered_bytes);
} else
Reported by FlawFinder.
color.c
3 issues
Line: 236
CWE codes:
758
{
const char *ptr = value;
int len = value_len;
char *end = dst + COLOR_MAXLEN;
unsigned int attr = 0;
struct color fg = { COLOR_UNSPECIFIED };
struct color bg = { COLOR_UNSPECIFIED };
while (len > 0 && isspace(*ptr)) {
Reported by Cppcheck.
Line: 427
Column: 7
CWE codes:
134
Suggestion:
Use a constant for the format specification
if (*color)
r += fprintf(fp, "%s", color);
r += vfprintf(fp, fmt, args);
if (*color)
r += fprintf(fp, "%s", GIT_COLOR_RESET);
if (trail)
r += fprintf(fp, "%s", trail);
return r;
Reported by FlawFinder.
Line: 193
Column: 32
CWE codes:
126
int color_parse(const char *value, char *dst)
{
return color_parse_mem(value, strlen(value), dst);
}
/*
* Write the ANSI color codes for "c" to "out"; the string should
* already have the ANSI escape code in it. "out" should have enough
Reported by FlawFinder.
compat/fopen.c
2 issues
Line: 20
Column: 10
CWE codes:
362
struct stat st;
if (mode[0] == 'w' || mode[0] == 'a')
return fopen(path, mode);
if (!(fp = fopen(path, mode)))
return NULL;
if (fstat(fileno(fp), &st)) {
Reported by FlawFinder.
Line: 22
Column: 13
CWE codes:
362
if (mode[0] == 'w' || mode[0] == 'a')
return fopen(path, mode);
if (!(fp = fopen(path, mode)))
return NULL;
if (fstat(fileno(fp), &st)) {
fclose(fp);
return NULL;
Reported by FlawFinder.