The following issues were found
ref-filter.c
14 issues
Line: 216
Column: 24
CWE codes:
134
Suggestion:
Use a constant for the format specification
* Expand string, append it to strbuf *sb, then return error code ret.
* Allow to save few lines of code.
*/
__attribute__((format (printf, 3, 4)))
static int strbuf_addf_ret(struct strbuf *sb, int ret, const char *fmt, ...)
{
va_list ap;
va_start(ap, fmt);
strbuf_vaddf(sb, fmt, ap);
Reported by FlawFinder.
Line: 177
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
cmp_type type;
info_source source;
union {
char color[COLOR_MAXLEN];
struct align align;
struct {
enum {
RR_REF, RR_TRACK, RR_TRACKSHORT, RR_REMOTE_NAME, RR_REMOTE_REF
} option;
Reported by FlawFinder.
Line: 1822
Column: 4
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
v->s = xstrdup(atom->u.color);
continue;
} else if (atom_type == ATOM_FLAG) {
char buf[256], *cp = buf;
if (ref->flag & REF_ISSYMREF)
cp = copy_advance(cp, ",symref");
if (ref->flag & REF_ISPACKED)
cp = copy_advance(cp, ",packed");
if (cp == buf)
Reported by FlawFinder.
Line: 650
Column: 13
CWE codes:
126
/* Do we have the atom already used elsewhere? */
for (i = 0; i < used_atom_cnt; i++) {
int len = strlen(used_atom[i].name);
if (len == ep - atom && !memcmp(used_atom[i].name, atom, len))
return i;
}
/*
Reported by FlawFinder.
Line: 666
Column: 13
CWE codes:
126
/* Is the atom a valid one? */
for (i = 0; i < ARRAY_SIZE(valid_atom); i++) {
int len = strlen(valid_atom[i].name);
if (len == atom_len && !memcmp(valid_atom[i].name, sp, len))
break;
}
if (ARRAY_SIZE(valid_atom) <= i)
Reported by FlawFinder.
Line: 1225
Column: 15
CWE codes:
126
static void grab_person(const char *who, struct atom_value *val, int deref, void *buf)
{
int i;
int wholen = strlen(who);
const char *wholine = NULL;
for (i = 0; i < used_atom_cnt; i++) {
const char *name = used_atom[i].name;
struct atom_value *v = &val[i];
Reported by FlawFinder.
Line: 1291
Column: 26
CWE codes:
126
struct strbuf payload = STRBUF_INIT;
struct strbuf signature = STRBUF_INIT;
const char *eol;
const char *end = buf + strlen(buf);
const char *sigstart;
/* parse signature first; we might not even have a subject line */
parse_signature(buf, end - buf, &payload, &signature);
Reported by FlawFinder.
Line: 1308
Column: 44
CWE codes:
126
while (*buf == '\n')
buf++;
*sig = strbuf_detach(&signature, siglen);
sigstart = buf + parse_signed_buffer(buf, strlen(buf));
/* subject is first non-empty line */
*sub = buf;
/* subject goes to first empty line before signature begins */
if ((eol = strstr(*sub, "\n\n"))) {
Reported by FlawFinder.
Line: 1331
Column: 13
CWE codes:
126
while (*buf == '\n' || *buf == '\r')
buf++;
*body = buf;
*bodylen = strlen(buf);
*nonsiglen = sigstart - buf;
}
/*
* If 'lines' is greater than 0, append that many lines from the given
Reported by FlawFinder.
Line: 1395
Column: 42
CWE codes:
126
} else if (atom->u.contents.option == C_BODY_DEP)
v->s = xmemdupz(bodypos, bodylen);
else if (atom->u.contents.option == C_LENGTH)
v->s = xstrfmt("%"PRIuMAX, (uintmax_t)strlen(subpos));
else if (atom->u.contents.option == C_BODY)
v->s = xmemdupz(bodypos, nonsiglen);
else if (atom->u.contents.option == C_SIG)
v->s = xmemdupz(sigpos, siglen);
else if (atom->u.contents.option == C_LINES) {
Reported by FlawFinder.
fsck.c
14 issues
Line: 207
Column: 24
CWE codes:
134
Suggestion:
Use a constant for the format specification
return opts && oid && oidset_contains(&opts->skiplist, oid);
}
__attribute__((format (printf, 5, 6)))
static int report(struct fsck_options *options,
const struct object_id *oid, enum object_type object_type,
enum fsck_msg_id msg_id, const char *fmt, ...)
{
va_list ap;
Reported by FlawFinder.
Line: 46
Column: 13
CWE codes:
126
/* convert id_string to lower case, without underscores. */
for (i = 0; i < FSCK_MSG_MAX; i++) {
const char *p = msg_id_info[i].id_string;
int len = strlen(p);
char *q = xmalloc(len);
msg_id_info[i].downcased = q;
while (*p)
if (*p == '_')
Reported by FlawFinder.
Line: 169
Column: 34
CWE codes:
126
Suggestion:
This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it
int done = 0;
while (!done) {
int len = strcspn(buf, " ,|"), equal;
done = !buf[len];
if (!len) {
buf++;
continue;
Reported by FlawFinder.
Line: 179
Column: 8
CWE codes:
126
Suggestion:
This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it
buf[len] = '\0';
for (equal = 0;
equal < len && buf[equal] != '=' && buf[equal] != ':';
equal++)
buf[equal] = tolower(buf[equal]);
buf[equal] = '\0';
if (!strcmp(buf, "skiplist")) {
Reported by FlawFinder.
Line: 179
Column: 27
CWE codes:
126
Suggestion:
This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it
buf[len] = '\0';
for (equal = 0;
equal < len && buf[equal] != '=' && buf[equal] != ':';
equal++)
buf[equal] = tolower(buf[equal]);
buf[equal] = '\0';
if (!strcmp(buf, "skiplist")) {
Reported by FlawFinder.
Line: 179
Column: 48
CWE codes:
126
Suggestion:
This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it
buf[len] = '\0';
for (equal = 0;
equal < len && buf[equal] != '=' && buf[equal] != ':';
equal++)
buf[equal] = tolower(buf[equal]);
buf[equal] = '\0';
if (!strcmp(buf, "skiplist")) {
Reported by FlawFinder.
Line: 181
Column: 8
CWE codes:
126
Suggestion:
This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it
for (equal = 0;
equal < len && buf[equal] != '=' && buf[equal] != ':';
equal++)
buf[equal] = tolower(buf[equal]);
buf[equal] = '\0';
if (!strcmp(buf, "skiplist")) {
if (equal == len)
die("skiplist requires a path");
Reported by FlawFinder.
Line: 181
Column: 29
CWE codes:
126
Suggestion:
This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it
for (equal = 0;
equal < len && buf[equal] != '=' && buf[equal] != ':';
equal++)
buf[equal] = tolower(buf[equal]);
buf[equal] = '\0';
if (!strcmp(buf, "skiplist")) {
if (equal == len)
die("skiplist requires a path");
Reported by FlawFinder.
Line: 182
Column: 7
CWE codes:
126
Suggestion:
This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it
equal < len && buf[equal] != '=' && buf[equal] != ':';
equal++)
buf[equal] = tolower(buf[equal]);
buf[equal] = '\0';
if (!strcmp(buf, "skiplist")) {
if (equal == len)
die("skiplist requires a path");
oidset_parse_file(&options->skiplist, buf + equal + 1);
Reported by FlawFinder.
Line: 371
Column: 13
CWE codes:
126
parents = commit->parents;
if (name && parents) {
int len = strlen(name), power;
if (len && name[len - 1] == '^') {
generation = 1;
name_prefix_len = len - 1;
}
Reported by FlawFinder.
builtin/gc.c
13 issues
Line: 1994
CWE codes:
908
cleanup:
free(lock_path);
free(testing);
return result;
}
static int maintenance_start(void)
{
if (maintenance_register())
Reported by Cppcheck.
Line: 446
Column: 4
CWE codes:
120
20
Suggestion:
Specify a limit to %s, or use a different input function
* running.
*/
time(NULL) - st.st_mtime <= 12 * 3600 &&
fscanf(fp, scan_fmt, &pid, locking_host) == 2 &&
/* be gentle to concurrent "gc" on remote hosts */
(strcmp(locking_host, my_host) || !kill(pid, 0) || errno == EPERM);
if (fp != NULL)
fclose(fp);
if (should_exit) {
Reported by FlawFinder.
Line: 1633
Column: 2
CWE codes:
134
Suggestion:
Use a constant for the format specification
"</array>\n"
"<key>StartCalendarInterval</key>\n"
"<array>\n";
fprintf(plist, preamble, name, exec_path, exec_path, frequency);
switch (schedule) {
case SCHEDULE_HOURLY:
repeat = "<dict>\n"
"<key>Hour</key><integer>%d</integer>\n"
Reported by FlawFinder.
Line: 1642
Column: 4
CWE codes:
134
Suggestion:
Use a constant for the format specification
"<key>Minute</key><integer>0</integer>\n"
"</dict>\n";
for (i = 1; i <= 23; i++)
fprintf(plist, repeat, i);
break;
case SCHEDULE_DAILY:
repeat = "<dict>\n"
"<key>Day</key><integer>%d</integer>\n"
Reported by FlawFinder.
Line: 1652
Column: 4
CWE codes:
134
Suggestion:
Use a constant for the format specification
"<key>Minute</key><integer>0</integer>\n"
"</dict>\n";
for (i = 1; i <= 6; i++)
fprintf(plist, repeat, i);
break;
case SCHEDULE_WEEKLY:
fprintf(plist,
"<dict>\n"
Reported by FlawFinder.
Line: 1825
Column: 2
CWE codes:
134
Suggestion:
Use a constant for the format specification
"</Exec>\n"
"</Actions>\n"
"</Task>\n";
fprintf(tfile->fp, xml, exec_path, exec_path, frequency);
strvec_split(&child.args, cmd);
strvec_pushl(&child.args, "/create", "/tn", name, "/f", "/xml",
get_tempfile_path(tfile), NULL);
close_tempfile_gently(tfile);
Reported by FlawFinder.
Line: 1928
Column: 3
CWE codes:
134
Suggestion:
Use a constant for the format specification
strbuf_addf(&line_format,
"%%s %%s * * %%s \"%s/git\" --exec-path=\"%s\" for-each-repo --config=maintenance.repo maintenance run --schedule=%%s\n",
exec_path, exec_path);
fprintf(cron_in, line_format.buf, "0", "1-23", "*", "hourly");
fprintf(cron_in, line_format.buf, "0", "0", "1-6", "daily");
fprintf(cron_in, line_format.buf, "0", "0", "0", "weekly");
strbuf_release(&line_format);
fprintf(cron_in, "\n%s\n", END_LINE);
Reported by FlawFinder.
Line: 1929
Column: 3
CWE codes:
134
Suggestion:
Use a constant for the format specification
"%%s %%s * * %%s \"%s/git\" --exec-path=\"%s\" for-each-repo --config=maintenance.repo maintenance run --schedule=%%s\n",
exec_path, exec_path);
fprintf(cron_in, line_format.buf, "0", "1-23", "*", "hourly");
fprintf(cron_in, line_format.buf, "0", "0", "1-6", "daily");
fprintf(cron_in, line_format.buf, "0", "0", "0", "weekly");
strbuf_release(&line_format);
fprintf(cron_in, "\n%s\n", END_LINE);
}
Reported by FlawFinder.
Line: 1930
Column: 3
CWE codes:
134
Suggestion:
Use a constant for the format specification
exec_path, exec_path);
fprintf(cron_in, line_format.buf, "0", "1-23", "*", "hourly");
fprintf(cron_in, line_format.buf, "0", "0", "1-6", "daily");
fprintf(cron_in, line_format.buf, "0", "0", "0", "weekly");
strbuf_release(&line_format);
fprintf(cron_in, "\n%s\n", END_LINE);
}
Reported by FlawFinder.
Line: 1965
Column: 28
CWE codes:
807
20
Suggestion:
Check environment variables carefully before using them
struct lock_file lk;
char *lock_path = xstrfmt("%s/schedule", the_repository->objects->odb->path);
testing = xstrdup_or_null(getenv("GIT_TEST_MAINT_SCHEDULER"));
if (testing) {
char *sep = strchr(testing, ':');
if (!sep)
die("GIT_TEST_MAINT_SCHEDULER unparseable: %s", testing);
*sep = '\0';
Reported by FlawFinder.
wt-status.c
13 issues
Line: 129
Column: 2
CWE codes:
120
Suggestion:
Make sure destination can always hold the source data
{
memset(s, 0, sizeof(*s));
s->repo = r;
memcpy(s->color_palette, default_wt_status_colors,
sizeof(default_wt_status_colors));
s->show_untracked_files = SHOW_NORMAL_UNTRACKED_FILES;
s->use_color = -1;
s->relative_paths = 1;
s->branch = resolve_refdup("HEAD", 0, NULL, NULL);
Reported by FlawFinder.
Line: 1147
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
struct strbuf sb = STRBUF_INIT;
const char *cp, *ep, *branch_name;
struct branch *branch;
char comment_line_string[3];
int i;
uint64_t t_begin = 0;
assert(s->branch && !s->is_initial);
if (!skip_prefix(s->branch, "refs/heads/", &branch_name))
Reported by FlawFinder.
Line: 1324
Column: 12
CWE codes:
362
static int read_rebase_todolist(const char *fname, struct string_list *lines)
{
struct strbuf line = STRBUF_INIT;
FILE *f = fopen(git_path("%s", fname), "r");
if (!f) {
if (errno == ENOENT)
return -1;
die_errno("Could not open file %s for reading",
Reported by FlawFinder.
Line: 2185
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 void wt_porcelain_v2_submodule_state(
struct wt_status_change_data *d,
char sub[5])
{
if (S_ISGITLINK(d->mode_head) ||
S_ISGITLINK(d->mode_index) ||
S_ISGITLINK(d->mode_worktree)) {
sub[0] = 'S';
Reported by FlawFinder.
Line: 2262
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
struct strbuf buf_from = STRBUF_INIT;
const char *path = NULL;
const char *path_from = NULL;
char key[3];
char submodule_token[5];
char sep_char, eol_char;
wt_porcelain_v2_fix_up_changed(it);
wt_porcelain_v2_submodule_state(d, submodule_token);
Reported by FlawFinder.
Line: 2263
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
const char *path = NULL;
const char *path_from = NULL;
char key[3];
char submodule_token[5];
char sep_char, eol_char;
wt_porcelain_v2_fix_up_changed(it);
wt_porcelain_v2_submodule_state(d, submodule_token);
Reported by FlawFinder.
Line: 2332
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
struct object_id oid;
} stages[3];
char *key;
char submodule_token[5];
char unmerged_prefix = 'u';
char eol_char = s->null_termination ? '\0' : '\n';
wt_porcelain_v2_submodule_state(d, submodule_token);
Reported by FlawFinder.
Line: 334
Column: 18
CWE codes:
126
if (!padding) {
label_width = maxwidth(wt_status_unmerged_status_string, 1, 7);
label_width += strlen(" ");
padding = xmallocz(label_width);
memset(padding, ' ', label_width);
}
one = quote_path(it->string, s->prefix, &onebuf, 0);
Reported by FlawFinder.
Line: 368
Column: 18
CWE codes:
126
if (!padding) {
/* If DIFF_STATUS_* uses outside the range [A..Z], we're in trouble */
label_width = maxwidth(wt_status_diff_status_string, 'A', 'Z');
label_width += strlen(" ");
padding = xmallocz(label_width);
memset(padding, ' ', label_width);
}
one_name = two_name = it->string;
Reported by FlawFinder.
Line: 512
Column: 37
CWE codes:
126
int pos, mask;
const struct cache_entry *ce;
pos = index_name_pos(istate, path, strlen(path));
if (0 <= pos)
return 0;
mask = 0;
pos = -pos-1;
Reported by FlawFinder.
builtin/update-index.c
13 issues
Line: 52
Column: 24
CWE codes:
134
Suggestion:
Use a constant for the format specification
UC_FORCE
};
__attribute__((format (printf, 1, 2)))
static void report(const char *fmt, ...)
{
va_list vp;
if (!verbose)
Reported by FlawFinder.
Line: 61
Column: 2
CWE codes:
134
Suggestion:
Use a constant for the format specification
return;
va_start(vp, fmt);
vprintf(fmt, vp);
putchar('\n');
va_end(vp);
}
static void remove_test_directory(void)
Reported by FlawFinder.
Line: 98
Column: 7
CWE codes:
362
{
int fd;
path = get_mtime_path(path);
fd = open(path, O_CREAT | O_RDWR, 0644);
if (fd < 0)
die_errno(_("failed to create file %s"), path);
return fd;
}
Reported by FlawFinder.
Line: 281
Column: 2
CWE codes:
120
Suggestion:
Make sure destination can always hold the source data
return 0;
ce = make_empty_cache_entry(&the_index, len);
memcpy(ce->name, path, len);
ce->ce_flags = create_ce_flags(0);
ce->ce_namelen = len;
fill_stat_cache_info(&the_index, ce, st);
ce->ce_mode = ce_mode_from_stat(old, st->st_mode);
Reported by FlawFinder.
Line: 417
Column: 2
CWE codes:
120
Suggestion:
Make sure destination can always hold the source data
ce = make_empty_cache_entry(&the_index, len);
oidcpy(&ce->oid, oid);
memcpy(ce->name, path, len);
ce->ce_flags = create_ce_flags(stage);
ce->ce_namelen = len;
ce->ce_mode = create_ce_mode(mode);
if (assume_unchanged)
ce->ce_flags |= CE_VALID;
Reported by FlawFinder.
Line: 619
Column: 2
CWE codes:
120
Suggestion:
Make sure destination can always hold the source data
ce = make_empty_cache_entry(&the_index, namelen);
oidcpy(&ce->oid, &oid);
memcpy(ce->name, path, namelen);
ce->ce_flags = create_ce_flags(stage);
ce->ce_namelen = namelen;
ce->ce_mode = create_ce_mode(mode);
return ce;
}
Reported by FlawFinder.
Line: 232
Column: 16
CWE codes:
126
static int mark_ce_flags(const char *path, int flag, int mark)
{
int namelen = strlen(path);
int pos = cache_name_pos(path, namelen);
if (0 <= pos) {
mark_fsmonitor_invalid(&the_index, active_cache[pos]);
if (mark)
active_cache[pos]->ce_flags |= flag;
Reported by FlawFinder.
Line: 373
Column: 8
CWE codes:
126
int pos, len;
const struct cache_entry *ce;
len = strlen(path);
if (has_symlink_leading_path(path, len))
return error("'%s' is beyond a symbolic link", path);
pos = cache_name_pos(path, len);
ce = pos < 0 ? NULL : active_cache[pos];
Reported by FlawFinder.
Line: 413
Column: 8
CWE codes:
126
if (!verify_path(path, mode))
return error("Invalid path '%s'", path);
len = strlen(path);
ce = make_empty_cache_entry(&the_index, len);
oidcpy(&ce->oid, oid);
memcpy(ce->name, path, len);
ce->ce_flags = create_ce_flags(stage);
Reported by FlawFinder.
Line: 437
Column: 29
CWE codes:
126
int pos;
struct cache_entry *ce;
pos = cache_name_pos(path, strlen(path));
if (pos < 0)
goto fail;
ce = active_cache[pos];
if (chmod_cache_entry(ce, flip) < 0)
goto fail;
Reported by FlawFinder.
object-name.c
13 issues
Line: 25
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
struct disambiguate_state {
int len; /* length of prefix in hex chars */
char hex_pfx[GIT_MAX_HEXSZ + 1];
struct object_id bin_pfx;
struct repository *repo;
disambiguate_hint_fn fn;
void *cb_data;
Reported by FlawFinder.
Line: 724
Column: 9
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 len)
{
static int bufno;
static char hexbuffer[4][GIT_MAX_HEXSZ + 1];
char *hex = hexbuffer[bufno];
bufno = (bufno + 1) % ARRAY_SIZE(hexbuffer);
repo_find_unique_abbrev_r(r, hex, oid, len);
return hex;
}
Reported by FlawFinder.
Line: 510
Column: 44
CWE codes:
126
struct disambiguate_state ds;
int ret;
if (init_object_disambiguation(r, prefix, strlen(prefix), &ds) < 0)
return -1;
ds.always_call_fn = 1;
ds.fn = repo_collect_ambiguous;
ds.cb_data = &collect;
Reported by FlawFinder.
Line: 762
Column: 20
CWE codes:
126
int i;
for (i = 0; i < nr; i++) {
int suffix_len = strlen(suffix[i]);
if (suffix_len <= len
&& !strncasecmp(string, suffix[i], suffix_len))
return suffix_len;
}
return 0;
Reported by FlawFinder.
Line: 906
Column: 11
CWE codes:
126
if (!len) {
if (!skip_prefix(real_ref, "refs/heads/", &str))
str = "HEAD";
len = strlen(str);
}
if (at_time) {
if (!(flags & GET_OID_QUIETLY)) {
warning(_("log for '%.*s' only goes back to %s"),
len, str,
Reported by FlawFinder.
Line: 987
Column: 13
CWE codes:
126
struct object *o, enum object_type expected_type)
{
if (name && !namelen)
namelen = strlen(name);
while (1) {
if (!o || (!o->parsed && !parse_object(r, &o->oid)))
return NULL;
if (expected_type == OBJ_ANY || o->type == expected_type)
return o;
Reported by FlawFinder.
Line: 1220
Column: 8
CWE codes:
126
return 0;
if (object->type == OBJ_TAG) {
object = deref_tag(cb->repo, object, path,
strlen(path));
if (!object)
return 0;
}
if (object->type != OBJ_COMMIT)
return 0;
Reported by FlawFinder.
Line: 1519
Column: 13
CWE codes:
126
int len;
if (!namelen)
namelen = strlen(name);
if (!options->allowed || (options->allowed & INTERPRET_BRANCH_LOCAL)) {
len = interpret_nth_prior_checkout(r, name, namelen, buf);
if (!len) {
return len; /* syntax Ok, not enough switches */
Reported by FlawFinder.
Line: 1563
Column: 12
CWE codes:
126
void strbuf_branchname(struct strbuf *sb, const char *name, unsigned allowed)
{
int len = strlen(name);
struct interpret_branch_name_options options = {
.allowed = allowed
};
int used = interpret_branch_name(name, len, sb, &options);
Reported by FlawFinder.
Line: 1725
Column: 21
CWE codes:
126
struct index_state *istate = r->index;
const struct cache_entry *ce;
int pos;
unsigned namelen = strlen(filename);
struct strbuf fullname = STRBUF_INIT;
if (!prefix)
prefix = "";
Reported by FlawFinder.
builtin/help.c
12 issues
Line: 228
Column: 3
CWE codes:
78
Suggestion:
try using a library call that implements the same functionality if available
if (!path)
path = "emacsclient";
strbuf_addf(&man_page, "(woman \"%s\")", page);
execlp(path, "emacsclient", "-e", man_page.buf, (char *)NULL);
warning_errno(_("failed to exec '%s'"), path);
strbuf_release(&man_page);
}
}
Reported by FlawFinder.
Line: 250
Column: 3
CWE codes:
78
Suggestion:
try using a library call that implements the same functionality if available
} else
path = "kfmclient";
strbuf_addf(&man_page, "man:%s(1)", page);
execlp(path, filename, "newTab", man_page.buf, (char *)NULL);
warning_errno(_("failed to exec '%s'"), path);
strbuf_release(&man_page);
}
}
Reported by FlawFinder.
Line: 260
Column: 2
CWE codes:
78
Suggestion:
try using a library call that implements the same functionality if available
{
if (!path)
path = "man";
execlp(path, "man", page, (char *)NULL);
warning_errno(_("failed to exec '%s'"), path);
}
static void exec_man_cmd(const char *cmd, const char *page)
{
Reported by FlawFinder.
Line: 268
Column: 2
CWE codes:
78
Suggestion:
try using a library call that implements the same functionality if available
{
struct strbuf shell_cmd = STRBUF_INIT;
strbuf_addf(&shell_cmd, "%s %s", cmd, page);
execl(SHELL_PATH, SHELL_PATH, "-c", shell_cmd.buf, (char *)NULL);
warning(_("failed to exec '%s'"), cmd);
strbuf_release(&shell_cmd);
}
static void add_man_viewer(const char *name)
Reported by FlawFinder.
Line: 458
Column: 2
CWE codes:
78
Suggestion:
try using a library call that implements the same functionality if available
static void show_info_page(const char *page)
{
setenv("INFOPATH", system_path(GIT_INFO_PATH), 1);
execlp("info", "info", "gitman", page, (char *)NULL);
die(_("no info viewer handled the request"));
}
static void get_html_page_path(struct strbuf *page_path, const char *page)
{
Reported by FlawFinder.
Line: 236
Column: 24
CWE codes:
807
20
Suggestion:
Check environment variables carefully before using them
static void exec_man_konqueror(const char *path, const char *page)
{
const char *display = getenv("DISPLAY");
if (display && *display) {
struct strbuf man_page = STRBUF_INIT;
const char *filename = "kfmclient";
/* It's simpler to launch konqueror using kfmclient. */
Reported by FlawFinder.
Line: 405
Column: 25
CWE codes:
807
20
Suggestion:
Check environment variables carefully before using them
static void setup_man_path(void)
{
struct strbuf new_path = STRBUF_INIT;
const char *old_path = getenv("MANPATH");
char *git_man_path = system_path(GIT_MAN_PATH);
/* We should always put ':' after our path. If there is no
* old_path, the ':' at the end will let 'man' to try
* system-wide paths after ours to find the manual page. If
Reported by FlawFinder.
Line: 442
Column: 25
CWE codes:
807
20
Suggestion:
Check environment variables carefully before using them
static void show_man_page(const char *page)
{
struct man_viewer_list *viewer;
const char *fallback = getenv("GIT_MAN_VIEWER");
setup_man_path();
for (viewer = man_viewer_list; viewer; viewer = viewer->next)
{
exec_viewer(viewer->name, page); /* will return when unable */
Reported by FlawFinder.
Line: 21
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 struct man_viewer_list {
struct man_viewer_list *next;
char name[FLEX_ARRAY];
} *man_viewer_list;
static struct man_viewer_info_list {
struct man_viewer_info_list *next;
const char *info;
Reported by FlawFinder.
Line: 27
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 struct man_viewer_info_list {
struct man_viewer_info_list *next;
const char *info;
char name[FLEX_ARRAY];
} *man_viewer_info_list;
enum help_format {
HELP_FORMAT_NONE,
HELP_FORMAT_MAN,
Reported by FlawFinder.
gettext.c
12 issues
Line: 69
Column: 24
CWE codes:
134
Suggestion:
Use a constant for the format specification
}
#ifndef NO_GETTEXT
__attribute__((format (printf, 1, 2)))
static int test_vsnprintf(const char *fmt, ...)
{
char buf[26];
int ret;
va_list ap;
Reported by FlawFinder.
Line: 76
Column: 8
CWE codes:
134
Suggestion:
Use a constant for the format specification
int ret;
va_list ap;
va_start(ap, fmt);
ret = vsnprintf(buf, sizeof(buf), fmt, ap);
va_end(ap);
return ret;
}
static void init_gettext_charset(const char *domain)
Reported by FlawFinder.
Line: 19
Column: 20
CWE codes:
807
20
Suggestion:
Check environment variables carefully before using them
static const char *locale_charset(void)
{
const char *env = getenv("LC_ALL"), *dot;
if (!env || !*env)
env = getenv("LC_CTYPE");
if (!env || !*env)
env = getenv("LANG");
Reported by FlawFinder.
Line: 22
Column: 9
CWE codes:
807
20
Suggestion:
Check environment variables carefully before using them
const char *env = getenv("LC_ALL"), *dot;
if (!env || !*env)
env = getenv("LC_CTYPE");
if (!env || !*env)
env = getenv("LANG");
if (!env)
return "UTF-8";
Reported by FlawFinder.
Line: 24
Column: 9
CWE codes:
807
20
Suggestion:
Check environment variables carefully before using them
if (!env || !*env)
env = getenv("LC_CTYPE");
if (!env || !*env)
env = getenv("LANG");
if (!env)
return "UTF-8";
dot = strchr(env, '.');
Reported by FlawFinder.
Line: 53
Column: 11
CWE codes:
807
20
Suggestion:
Check environment variables carefully before using them
{
const char *retval;
retval = getenv("LANGUAGE");
if (retval && *retval)
return retval;
#ifndef NO_GETTEXT
retval = setlocale(LC_MESSAGES, NULL);
Reported by FlawFinder.
Line: 107
Column: 22
CWE codes:
807
20
Suggestion:
Check environment variables carefully before using them
void git_setup_gettext(void)
{
const char *podir = getenv(GIT_TEXT_DOMAIN_DIR_ENVIRONMENT);
char *p = NULL;
if (!podir)
podir = p = system_path(GIT_LOCALE_PATH);
Reported by FlawFinder.
Line: 142
Column: 21
CWE codes:
807
20
Suggestion:
Check environment variables carefully before using them
{
#ifdef NO_GETTEXT
if (!charset) {
const char *env = getenv("LC_ALL");
if (!env || !*env)
env = getenv("LC_CTYPE");
if (!env || !*env)
env = getenv("LANG");
if (!env)
Reported by FlawFinder.
Line: 144
Column: 10
CWE codes:
807
20
Suggestion:
Check environment variables carefully before using them
if (!charset) {
const char *env = getenv("LC_ALL");
if (!env || !*env)
env = getenv("LC_CTYPE");
if (!env || !*env)
env = getenv("LANG");
if (!env)
env = "";
if (strchr(env, '.'))
Reported by FlawFinder.
Line: 146
Column: 10
CWE codes:
807
20
Suggestion:
Check environment variables carefully before using them
if (!env || !*env)
env = getenv("LC_CTYPE");
if (!env || !*env)
env = getenv("LANG");
if (!env)
env = "";
if (strchr(env, '.'))
env = strchr(env, '.') + 1;
charset = xstrdup(env);
Reported by FlawFinder.
builtin/blame.c
12 issues
Line: 54
Column: 8
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 abbrev = -1;
static int no_whole_file_rename;
static int show_progress;
static char repeated_meta_color[COLOR_MAXLEN];
static int coloring_mode;
static struct string_list ignore_revs_file_list = STRING_LIST_INIT_NODUP;
static int mark_unblamable_lines;
static int mark_ignored_lines;
Reported by FlawFinder.
Line: 308
Column: 8
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)
const char *time_str;
size_t time_width;
int tz;
tz = atoi(tz_str);
time_str = show_date(time, tz, &blame_date_mode);
strbuf_addstr(&time_buf, time_str);
/*
* Add space paddings to time_buf to display a fixed width
* string, and use time_width for display width calibration.
Reported by FlawFinder.
Line: 350
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 cnt;
const char *cp;
struct blame_origin *suspect = ent->suspect;
char hex[GIT_MAX_HEXSZ + 1];
oid_to_hex_r(hex, &suspect->commit->object.oid);
printf("%s %d %d %d\n",
hex,
ent->s_lno + 1,
Reported by FlawFinder.
Line: 384
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 struct color_field {
timestamp_t hop;
char col[COLOR_MAXLEN];
} *colorfield;
static int colorfield_nr, colorfield_alloc;
static void parse_color_fields(const char *s)
{
Reported by FlawFinder.
Line: 444
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
const char *cp;
struct blame_origin *suspect = ent->suspect;
struct commit_info ci;
char hex[GIT_MAX_HEXSZ + 1];
int show_raw_time = !!(opt & OUTPUT_RAW_TIMESTAMP);
const char *default_color = NULL, *color = NULL, *reset = NULL;
get_commit_info(suspect->commit, &ci, 1);
oid_to_hex_r(hex, &suspect->commit->object.oid);
Reported by FlawFinder.
Line: 119
Column: 9
CWE codes:
126
tmp = strstr(inbuf, what);
if (!tmp)
goto error_out;
tmp += strlen(what);
endp = strchr(tmp, '\n');
if (!endp)
len = strlen(tmp);
else
len = endp - tmp;
Reported by FlawFinder.
Line: 122
Column: 9
CWE codes:
126
tmp += strlen(what);
endp = strchr(tmp, '\n');
if (!endp)
len = strlen(tmp);
else
len = endp - tmp;
if (split_ident_line(&ident, tmp, len)) {
error_out:
Reported by FlawFinder.
Line: 602
Column: 12
CWE codes:
126
{
const char *uniq = find_unique_abbrev(&suspect->commit->object.oid,
auto_abbrev);
int len = strlen(uniq);
if (auto_abbrev < len)
return len;
return auto_abbrev;
}
Reported by FlawFinder.
Line: 629
Column: 9
CWE codes:
126
auto_abbrev = update_auto_abbrev(auto_abbrev, suspect);
if (strcmp(suspect->path, sb->path))
*option |= OUTPUT_SHOW_NAME;
num = strlen(suspect->path);
if (longest_file < num)
longest_file = num;
if (!(suspect->commit->object.flags & METAINFO_SHOWN)) {
struct commit_info ci;
suspect->commit->object.flags |= METAINFO_SHOWN;
Reported by FlawFinder.
Line: 681
Column: 38
CWE codes:
126
static const char *add_prefix(const char *prefix, const char *path)
{
return prefix_path(prefix, prefix ? strlen(prefix) : 0, path);
}
static int git_blame_config(const char *var, const char *value, void *cb)
{
if (!strcmp(var, "blame.showroot")) {
Reported by FlawFinder.
builtin/fetch.c
12 issues
Line: 653
Column: 14
CWE codes:
807
20
Suggestion:
Check environment variables carefully before using them
int check_old)
{
char *msg;
char *rla = getenv("GIT_REFLOG_ACTION");
struct ref_transaction *our_transaction = NULL;
struct strbuf err = STRBUF_INIT;
int ret;
if (dry_run)
Reported by FlawFinder.
Line: 291
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
struct hashmap_entry ent;
struct object_id oid;
int ignore;
char refname[FLEX_ARRAY];
};
static int refname_hash_entry_cmp(const void *hashmap_cmp_fn_data,
const struct hashmap_entry *eptr,
const struct hashmap_entry *entry_or_key,
Reported by FlawFinder.
Line: 991
Column: 20
CWE codes:
362
const char *filename = git_path_fetch_head(the_repository);
if (write_fetch_head) {
fetch_head->fp = fopen(filename, "a");
if (!fetch_head->fp)
return error_errno(_("cannot open %s"), filename);
strbuf_init(&fetch_head->buf, 0);
} else {
fetch_head->fp = NULL;
Reported by FlawFinder.
Line: 1008
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
const char *note,
const char *url, size_t url_len)
{
char old_oid_hex[GIT_MAX_HEXSZ + 1];
const char *merge_status_marker;
size_t i;
if (!fetch_head->fp)
return;
Reported by FlawFinder.
Line: 2013
Column: 15
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)
}
/* no need to be strict, transport_set_option() will validate it again */
if (depth && atoi(depth) < 1)
die(_("depth %s is not a positive number"), depth);
if (depth || deepen_since || deepen_not.nr)
deepen = 1;
/* FETCH_HEAD never gets updated in --dry-run mode */
Reported by FlawFinder.
Line: 311
Column: 15
CWE codes:
126
const struct object_id *oid)
{
struct refname_hash_entry *ent;
size_t len = strlen(refname);
FLEX_ALLOC_MEM(ent, refname, refname, len);
hashmap_entry_init(&ent->ent, strhash(refname));
oidcpy(&ent->oid, oid);
hashmap_add(map, &ent->ent);
Reported by FlawFinder.
Line: 783
Column: 9
CWE codes:
126
const char *p = NULL;
int plen, nlen;
nlen = strlen(needle);
if (ends_with(haystack->buf, needle))
p = haystack->buf + haystack->len - nlen;
else
p = strstr(haystack->buf, needle);
if (!p)
Reported by FlawFinder.
Line: 794
Column: 9
CWE codes:
126
if (p > haystack->buf && p[-1] != '/')
return 0;
plen = strlen(p);
if (plen > nlen && p[nlen] != '/')
return 0;
strbuf_splice(haystack, p - haystack->buf, nlen,
placeholder, strlen(placeholder));
Reported by FlawFinder.
Line: 799
Column: 22
CWE codes:
126
return 0;
strbuf_splice(haystack, p - haystack->buf, nlen,
placeholder, strlen(placeholder));
return 1;
}
static void print_compact(struct strbuf *display,
const char *remote, const char *local)
Reported by FlawFinder.
Line: 830
Column: 31
CWE codes:
126
const char *remote, const char *local,
int summary_width)
{
int width = (summary_width + strlen(summary) - gettext_width(summary));
strbuf_addf(display, "%c %-*s ", code, width, summary);
if (!compact_format)
print_remote_to_local(display, remote, local);
else
Reported by FlawFinder.