Variable scope issue in confstr

Allan McRae allan@archlinux.org
Sun Mar 25 03:00:00 GMT 2012


In confstr (posix/confstr.c), the variable restenvs is defined within a
swtich case block and then used outside the switch statement (via
assignment to the variable string).  Issues with this are exposed with
gcc-4.7 and -O2.


2012-03-25  Allan McRae  <allan@archlinux.org>

	* posix/confstr.c: fix variable scope issue.


diff --git a/posix/confstr.c b/posix/confstr.c
index 3c9566d..3ba9e5a 100644
--- a/posix/confstr.c
+++ b/posix/confstr.c
@@ -104,7 +104,7 @@ confstr (name, buf, len)
 	  }
 #endif
 	restenvs[string_len++] = '\0';
-	string = restenvs;
+	string = strdup(restenvs);
       }
       break;

@@ -167,7 +167,7 @@ confstr (name, buf, len)
 	  }
 #endif
 	restenvs[string_len++] = '\0';
-	string = restenvs;
+	string = strdup(restenvs);
       }
       break;

@@ -230,7 +230,7 @@ confstr (name, buf, len)
 	  }
 #endif
 	restenvs[string_len++] = '\0';
-	string = restenvs;
+	string = strdup(restenvs);
       }
       break;



More information about the Libc-alpha mailing list