Commit fd69c7bf by Vicent Martí

Merge pull request #1344 from arrbee/fix-static-analyzer-issues

Fix static analyzer issues
parents 1d75acf7 56543a60
...@@ -64,6 +64,7 @@ static int checkout_notify( ...@@ -64,6 +64,7 @@ static int checkout_notify(
{ {
git_diff_file wdfile; git_diff_file wdfile;
const git_diff_file *baseline = NULL, *target = NULL, *workdir = NULL; const git_diff_file *baseline = NULL, *target = NULL, *workdir = NULL;
const char *path = NULL;
if (!data->opts.notify_cb) if (!data->opts.notify_cb)
return 0; return 0;
...@@ -81,6 +82,8 @@ static int checkout_notify( ...@@ -81,6 +82,8 @@ static int checkout_notify(
wdfile.mode = wditem->mode; wdfile.mode = wditem->mode;
workdir = &wdfile; workdir = &wdfile;
path = wditem->path;
} }
if (delta) { if (delta) {
...@@ -101,11 +104,12 @@ static int checkout_notify( ...@@ -101,11 +104,12 @@ static int checkout_notify(
baseline = &delta->old_file; baseline = &delta->old_file;
break; break;
} }
path = delta->old_file.path;
} }
return data->opts.notify_cb( return data->opts.notify_cb(
why, delta ? delta->old_file.path : wditem->path, why, path, baseline, target, workdir, data->opts.notify_payload);
baseline, target, workdir, data->opts.notify_payload);
} }
static bool checkout_is_workdir_modified( static bool checkout_is_workdir_modified(
...@@ -683,7 +687,7 @@ static int blob_content_to_file( ...@@ -683,7 +687,7 @@ static int blob_content_to_file(
{ {
int error = -1, nb_filters = 0; int error = -1, nb_filters = 0;
mode_t file_mode = opts->file_mode; mode_t file_mode = opts->file_mode;
bool dont_free_filtered = false; bool dont_free_filtered;
git_buf unfiltered = GIT_BUF_INIT, filtered = GIT_BUF_INIT; git_buf unfiltered = GIT_BUF_INIT, filtered = GIT_BUF_INIT;
git_vector filters = GIT_VECTOR_INIT; git_vector filters = GIT_VECTOR_INIT;
......
...@@ -1280,14 +1280,15 @@ static void set_data_from_buffer( ...@@ -1280,14 +1280,15 @@ static void set_data_from_buffer(
{ {
file->size = (git_off_t)buffer_len; file->size = (git_off_t)buffer_len;
file->mode = 0644; file->mode = 0644;
map->len = buffer_len;
if (!buffer) if (!buffer) {
file->flags |= GIT_DIFF_FILE_NO_DATA; file->flags |= GIT_DIFF_FILE_NO_DATA;
else map->data = NULL;
} else {
map->data = (char *)buffer;
git_odb_hash(&file->oid, buffer, buffer_len, GIT_OBJ_BLOB); git_odb_hash(&file->oid, buffer, buffer_len, GIT_OBJ_BLOB);
}
map->len = buffer_len;
map->data = (char *)buffer;
} }
typedef struct { typedef struct {
......
...@@ -147,7 +147,7 @@ static int manipulate_note_in_tree_r( ...@@ -147,7 +147,7 @@ static int manipulate_note_in_tree_r(
int fanout, int fanout,
int current_error)) int current_error))
{ {
int error = -1; int error;
git_tree *subtree = NULL, *new = NULL; git_tree *subtree = NULL, *new = NULL;
char subtree_name[3]; char subtree_name[3];
......
...@@ -13,25 +13,28 @@ ...@@ -13,25 +13,28 @@
#ifndef GIT_WIN32 #ifndef GIT_WIN32
#ifdef NO_ADDRINFO #ifdef NO_ADDRINFO
int p_getaddrinfo( int p_getaddrinfo(
const char *host, const char *host,
const char *port, const char *port,
struct addrinfo *hints, struct addrinfo *hints,
struct addrinfo **info) struct addrinfo **info)
{ {
GIT_UNUSED(hints);
struct addrinfo *ainfo, *ai; struct addrinfo *ainfo, *ai;
int p = 0; int p = 0;
GIT_UNUSED(hints);
if ((ainfo = malloc(sizeof(struct addrinfo))) == NULL) if ((ainfo = malloc(sizeof(struct addrinfo))) == NULL)
return -1; return -1;
if ((ainfo->ai_hostent = gethostbyname(host)) == NULL) if ((ainfo->ai_hostent = gethostbyname(host)) == NULL) {
free(ainfo);
return -2; return -2;
}
ainfo->ai_servent = getservbyname(port, 0); ainfo->ai_servent = getservbyname(port, 0);
if (ainfo->ai_servent) if (ainfo->ai_servent)
ainfo->ai_port = ainfo->ai_servent->s_port; ainfo->ai_port = ainfo->ai_servent->s_port;
else else
...@@ -50,14 +53,14 @@ int p_getaddrinfo( ...@@ -50,14 +53,14 @@ int p_getaddrinfo(
ainfo->ai_addrlen = sizeof(struct sockaddr_in); ainfo->ai_addrlen = sizeof(struct sockaddr_in);
*info = ainfo; *info = ainfo;
if (ainfo->ai_hostent->h_addr_list[1] == NULL) { if (ainfo->ai_hostent->h_addr_list[1] == NULL) {
ainfo->ai_next = NULL; ainfo->ai_next = NULL;
return 0; return 0;
} }
ai = ainfo; ai = ainfo;
for (p = 1; ainfo->ai_hostent->h_addr_list[p] != NULL; p++) { for (p = 1; ainfo->ai_hostent->h_addr_list[p] != NULL; p++) {
ai->ai_next = malloc(sizeof(struct addrinfo)); ai->ai_next = malloc(sizeof(struct addrinfo));
memcpy(&ai->ai_next, ainfo, sizeof(struct addrinfo)); memcpy(&ai->ai_next, ainfo, sizeof(struct addrinfo));
...@@ -67,7 +70,7 @@ int p_getaddrinfo( ...@@ -67,7 +70,7 @@ int p_getaddrinfo(
ai->ai_next->ai_addr = (struct addrinfo *)&ai->ai_next->ai_addr_in; ai->ai_next->ai_addr = (struct addrinfo *)&ai->ai_next->ai_addr_in;
ai = ai->ai_next; ai = ai->ai_next;
} }
ai->ai_next = NULL; ai->ai_next = NULL;
return 0; return 0;
} }
...@@ -75,9 +78,9 @@ int p_getaddrinfo( ...@@ -75,9 +78,9 @@ int p_getaddrinfo(
void p_freeaddrinfo(struct addrinfo *info) void p_freeaddrinfo(struct addrinfo *info)
{ {
struct addrinfo *p, *next; struct addrinfo *p, *next;
p = info; p = info;
while(p != NULL) { while(p != NULL) {
next = p->ai_next; next = p->ai_next;
free(p); free(p);
...@@ -88,27 +91,19 @@ void p_freeaddrinfo(struct addrinfo *info) ...@@ -88,27 +91,19 @@ void p_freeaddrinfo(struct addrinfo *info)
const char *p_gai_strerror(int ret) const char *p_gai_strerror(int ret)
{ {
switch(ret) { switch(ret) {
case -1: case -1: return "Out of memory"; break;
return "Out of memory"; case -2: return "Address lookup failed"; break;
break; default: return "Unknown error"; break;
case -2:
return "Address lookup failed";
break;
default:
return "Unknown error";
break;
} }
} }
#endif /* NO_ADDRINFO */ #endif /* NO_ADDRINFO */
int p_open(const char *path, int flags, ...) int p_open(const char *path, int flags, ...)
{ {
mode_t mode = 0; mode_t mode = 0;
if (flags & O_CREAT) if (flags & O_CREAT) {
{
va_list arg_list; va_list arg_list;
va_start(arg_list, flags); va_start(arg_list, flags);
...@@ -159,6 +154,7 @@ int p_rename(const char *from, const char *to) ...@@ -159,6 +154,7 @@ int p_rename(const char *from, const char *to)
int p_read(git_file fd, void *buf, size_t cnt) int p_read(git_file fd, void *buf, size_t cnt)
{ {
char *b = buf; char *b = buf;
while (cnt) { while (cnt) {
ssize_t r; ssize_t r;
#ifdef GIT_WIN32 #ifdef GIT_WIN32
...@@ -183,6 +179,7 @@ int p_read(git_file fd, void *buf, size_t cnt) ...@@ -183,6 +179,7 @@ int p_read(git_file fd, void *buf, size_t cnt)
int p_write(git_file fd, const void *buf, size_t cnt) int p_write(git_file fd, const void *buf, size_t cnt)
{ {
const char *b = buf; const char *b = buf;
while (cnt) { while (cnt) {
ssize_t r; ssize_t r;
#ifdef GIT_WIN32 #ifdef GIT_WIN32
......
...@@ -1493,7 +1493,7 @@ int git_reference_foreach( ...@@ -1493,7 +1493,7 @@ int git_reference_foreach(
/* list all the packed references first */ /* list all the packed references first */
if (list_flags & GIT_REF_PACKED) { if (list_flags & GIT_REF_PACKED) {
const char *ref_name; const char *ref_name;
void *ref; void *ref = NULL;
GIT_UNUSED(ref); GIT_UNUSED(ref);
if (packed_load(repo) < 0) if (packed_load(repo) < 0)
......
...@@ -88,7 +88,7 @@ static int apply_basic_credential(HINTERNET request, git_cred *cred) ...@@ -88,7 +88,7 @@ static int apply_basic_credential(HINTERNET request, git_cred *cred)
git_cred_userpass_plaintext *c = (git_cred_userpass_plaintext *)cred; git_cred_userpass_plaintext *c = (git_cred_userpass_plaintext *)cred;
git_buf buf = GIT_BUF_INIT, raw = GIT_BUF_INIT; git_buf buf = GIT_BUF_INIT, raw = GIT_BUF_INIT;
wchar_t *wide = NULL; wchar_t *wide = NULL;
int error = -1, wide_len; int error = -1, wide_len = 0;
git_buf_printf(&raw, "%s:%s", c->username, c->password); git_buf_printf(&raw, "%s:%s", c->username, c->password);
......
...@@ -86,14 +86,18 @@ int cl_setenv(const char *name, const char *value) ...@@ -86,14 +86,18 @@ int cl_setenv(const char *name, const char *value)
git__utf8_to_16(name_utf16, GIT_WIN_PATH, name); git__utf8_to_16(name_utf16, GIT_WIN_PATH, name);
if (value != NULL) if (value) {
git__utf8_to_16(value_utf16, GIT_WIN_PATH, value); git__utf8_to_16(value_utf16, GIT_WIN_PATH, value);
cl_assert(SetEnvironmentVariableW(name_utf16, value_utf16));
} else {
/* Windows XP returns 0 (failed) when passing NULL for lpValue when
* lpName does not exist in the environment block. This behavior
* seems to have changed in later versions. Don't check return value
* of SetEnvironmentVariable when passing NULL for lpValue.
*/
SetEnvironmentVariableW(name_utf16, NULL);
}
/* Windows XP returns 0 (failed) when passing NULL for lpValue when lpName
* does not exist in the environment block. This behavior seems to have changed
* in later versions. Don't fail when SetEnvironmentVariable fails, if we passed
* NULL for lpValue. */
cl_assert(SetEnvironmentVariableW(name_utf16, value ? value_utf16 : NULL) || !value);
return 0; return 0;
} }
......
...@@ -74,6 +74,8 @@ void test_core_env__0(void) ...@@ -74,6 +74,8 @@ void test_core_env__0(void)
char **val; char **val;
memset(testfile, 0, sizeof(testfile)); memset(testfile, 0, sizeof(testfile));
cl_assert_equal_s("", testfile);
memcpy(testfile, "testfile", 8); memcpy(testfile, "testfile", 8);
cl_assert_equal_s("testfile", testfile); cl_assert_equal_s("testfile", testfile);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment