msvc: opendir: fix malloc-failure
authorErik Faye-Lund <kusmabite@gmail.com>
Tue, 23 Nov 2010 18:38:24 +0000 (19:38 +0100)
committerJunio C Hamano <gitster@pobox.com>
Wed, 24 Nov 2010 00:06:46 +0000 (16:06 -0800)
Previsouly, the code checked for malloc-failure after it had accessed
the returned pointer. Move the check a bit earlier to avoid segfault.

Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
compat/msvc.c

index ac04a4ccbdd8319349aa2647374d78fd6639f425..d6096e4bd96ddb82da7eb653cbde0e73172e0391 100644 (file)
@@ -7,16 +7,16 @@ DIR *opendir(const char *name)
 {
        int len;
        DIR *p;
-       p = (DIR*)malloc(sizeof(DIR));
+       p = malloc(sizeof(DIR));
+       if (!p)
+               return NULL;
+
        memset(p, 0, sizeof(DIR));
        strncpy(p->dd_name, name, PATH_MAX);
        len = strlen(p->dd_name);
        p->dd_name[len] = '/';
        p->dd_name[len+1] = '*';
 
-       if (p == NULL)
-               return NULL;
-
        p->dd_handle = _findfirst(p->dd_name, &p->dd_dta);
 
        if (p->dd_handle == -1) {