The following issues were found
http-walker.c
2 issues
Line: 295
Column: 17
CWE codes:
126
* neighbour.
*/
i += 3;
serverlen = strlen(base);
while (i + 2 < posn &&
!memcmp(data + i, "../", 3)) {
do {
serverlen--;
} while (serverlen &&
Reported by FlawFinder.
Line: 611
Column: 29
CWE codes:
126
data->alt = xmalloc(sizeof(*data->alt));
data->alt->base = xstrdup(url);
for (s = data->alt->base + strlen(data->alt->base) - 1; *s == '/'; --s)
*s = 0;
data->alt->got_indices = 0;
data->alt->packs = NULL;
data->alt->next = NULL;
Reported by FlawFinder.
bloom.c
2 issues
Line: 16
Column: 11
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 pathmap_hash_entry {
struct hashmap_entry entry;
const char path[FLEX_ARRAY];
};
static uint32_t rotate_left(uint32_t value, int32_t count)
{
uint32_t mask = 8 * sizeof(uint32_t) - 1;
Reported by FlawFinder.
Line: 284
Column: 28
CWE codes:
126
hashmap_for_each_entry(&pathmap, &iter, e, entry) {
struct bloom_key key;
fill_bloom_key(e->path, strlen(e->path), &key, settings);
add_key_to_filter(&key, filter, settings);
clear_bloom_key(&key);
}
cleanup:
Reported by FlawFinder.
utf8.h
2 issues
Line: 15
Column: 24
CWE codes:
134
Suggestion:
Use a constant for the format specification
int is_utf8(const char *text);
int is_encoding_utf8(const char *name);
int same_encoding(const char *, const char *);
__attribute__((format (printf, 2, 3)))
int utf8_fprintf(FILE *, const char *, ...);
extern const char utf8_bom[];
int skip_utf8_bom(char **, size_t);
Reported by FlawFinder.
Line: 45
Column: 33
CWE codes:
126
const char *out_encoding,
const char *in_encoding)
{
return reencode_string_len(in, strlen(in),
out_encoding, in_encoding,
NULL);
}
int mbs_chrlen(const char **text, size_t *remainder_p, const char *encoding);
Reported by FlawFinder.
varint.c
2 issues
Line: 22
Column: 11
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 encode_varint(uintmax_t value, unsigned char *buf)
{
unsigned char varint[16];
unsigned pos = sizeof(varint) - 1;
varint[pos] = value & 127;
while (value >>= 7)
varint[--pos] = 128 | (--value & 127);
if (buf)
Reported by FlawFinder.
Line: 28
Column: 3
CWE codes:
120
Suggestion:
Make sure destination can always hold the source data
while (value >>= 7)
varint[--pos] = 128 | (--value & 127);
if (buf)
memcpy(buf, varint + pos, sizeof(varint) - pos);
return sizeof(varint) - pos;
}
Reported by FlawFinder.
credential.c
2 issues
Line: 14
Column: 2
CWE codes:
120
Suggestion:
Make sure destination can always hold the source data
void credential_init(struct credential *c)
{
struct credential blank = CREDENTIAL_INIT;
memcpy(c, &blank, sizeof(*c));
}
void credential_clear(struct credential *c)
{
free(c->protocol);
Reported by FlawFinder.
Line: 482
Column: 17
CWE codes:
126
if (*slash) {
char *p;
c->path = url_decode(slash);
p = c->path + strlen(c->path) - 1;
while (p > c->path && *p == '/')
*p-- = '\0';
}
if (check_url_component(url, quiet, "username", c->username) < 0 ||
Reported by FlawFinder.
ctype.c
2 issues
Line: 20
Column: 16
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
Z = GIT_CNTRL | GIT_SPACE
};
const unsigned char sane_ctype[256] = {
X, X, X, X, X, X, X, X, X, Z, Z, X, X, Z, X, X, /* 0.. 15 */
X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, /* 16.. 31 */
S, P, P, P, R, P, P, P, R, R, G, R, P, P, R, P, /* 32.. 47 */
D, D, D, D, D, D, D, D, D, D, P, P, P, P, P, G, /* 48.. 63 */
P, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 64.. 79 */
Reported by FlawFinder.
Line: 33
Column: 16
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
};
/* For case-insensitive kwset */
const unsigned char tolower_trans_tbl[256] = {
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
' ', '!', '"', '#', '$', '%', '&', 0x27,
Reported by FlawFinder.
compat/open.c
2 issues
Line: 3
Column: 8
CWE codes:
362
#include "git-compat-util.h"
#undef open
int git_open_with_retry(const char *path, int flags, ...)
{
mode_t mode = 0;
int ret;
/*
Reported by FlawFinder.
Line: 21
Column: 9
CWE codes:
362
}
do {
ret = open(path, flags, mode);
} while (ret < 0 && errno == EINTR);
return ret;
}
Reported by FlawFinder.
contrib/credential/libsecret/git-credential-libsecret.c
2 issues
Line: 280
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)
value = strrchr(c->host, ':');
if (value) {
*value++ = '\0';
c->port = atoi(value);
}
} else if (!strcmp(key, "path")) {
g_free(c->path);
c->path = g_strdup(value);
} else if (!strcmp(key, "username")) {
Reported by FlawFinder.
Line: 255
Column: 14
CWE codes:
126
key = buf = g_malloc(1024);
while (fgets(buf, 1024, stdin)) {
line_len = strlen(buf);
if (line_len && buf[line_len-1] == '\n')
buf[--line_len] = '\0';
if (!line_len)
Reported by FlawFinder.
delta-islands.c
2 issues
Line: 53
Column: 3
CWE codes:
120
Suggestion:
Make sure destination can always hold the source data
struct island_bitmap *b = xcalloc(1, size);
if (old)
memcpy(b, old, size);
b->refcount = 1;
return b;
}
Reported by FlawFinder.
Line: 363
Column: 2
CWE codes:
120
Suggestion:
Make sure destination can always hold the source data
rl = kh_value(remote_islands, pos);
oid_array_append(&rl->oids, oid);
memcpy(&sha_core, oid->hash, sizeof(uint64_t));
rl->hash += sha_core;
}
static int find_island_for_ref(const char *refname, const struct object_id *oid,
int flags, void *data)
Reported by FlawFinder.
contrib/credential/gnome-keyring/git-credential-gnome-keyring.c
2 issues
Line: 381
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)
value = strrchr(c->host, ':');
if (value) {
*value++ = '\0';
c->port = atoi(value);
}
} else if (!strcmp(key, "path")) {
g_free(c->path);
c->path = g_strdup(value);
} else if (!strcmp(key, "username")) {
Reported by FlawFinder.
Line: 356
Column: 14
CWE codes:
126
key = buf = gnome_keyring_memory_alloc(1024);
while (fgets(buf, 1024, stdin)) {
line_len = strlen(buf);
if (line_len && buf[line_len-1] == '\n')
buf[--line_len] = '\0';
if (!line_len)
Reported by FlawFinder.