s3: VFS: Protect errno if sys_getwd() fails across free() call.
[amitay/samba.git] / source3 / lib / system.c
index 5baa8f7d3ff0e841389d0e430508350e94902045..507d4a9af93a824c8e9c2ae96088dc7afd021560 100644 (file)
@@ -594,7 +594,9 @@ char *sys_getwd(void)
                        break;
                }
                if (errno != ERANGE) {
+                       int saved_errno = errno;
                        SAFE_FREE(s);
+                       errno = saved_errno;
                        break;
                }
                allocated *= 2;
@@ -612,7 +614,9 @@ char *sys_getwd(void)
        }
        wd = getwd(s);
        if (wd == NULL) {
+               int saved_errno = errno;
                SAFE_FREE(s);
+               errno = saved_errno;
        }
        return wd;
 #endif