rxgen-cpp-definition-20081221
authorJeffrey Altman <jaltman@secure-endpoints.com>
Sun, 21 Dec 2008 06:05:12 +0000 (06:05 +0000)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Sun, 21 Dec 2008 06:05:12 +0000 (06:05 +0000)
LICENSE MIT
FIXES 124011

avoid "ologo" compilation error messages due to buffer overflow in rxgen
on Windows.  research performed by mlane@sinenomine.net.

src/rxgen/rpc_main.c

index e2d2b56..5cb1f7a 100644 (file)
@@ -94,11 +94,15 @@ char xflag = 0;                     /* if set, add stats code to stubs */
 char yflag = 0;                        /* if set, only emit function name arrays to xdr file */
 int debug = 0;
 static char *cmdname;
+#ifdef AFS_NT40_ENV
+static char *CPP = NULL;
+#else /* AFS_NT40_ENV */
 #ifdef PATH_CPP
 static char CPP[] = PATH_CPP;
 #else
 static char CPP[] = "/lib/cpp";
 #endif
+#endif /* AFS_NT40_ENV */
 static char CPPFLAGS[] = "-C";
 
 #ifdef AFS_ALPHA_ENV
@@ -144,16 +148,14 @@ int
 main(int argc, char *argv[])
 {
     struct commandline cmd;
-#ifdef AFS_NT40_ENV
-    char *ep;
 
-    /* initialize CPP with the correct pre-processor on NT */
-    ep = getenv("RXGEN_CPPCMD");
-    if (ep)
-       strcpy(CPP, ep);
-    else
-       strcpy(CPP, "cl /EP /C /nologo");
-#endif
+#ifdef AFS_NT40_ENV
+    /* initialize CPP with the correct pre-processor for Windows */
+    CPP = getenv("RXGEN_CPPCMD");
+    if (!CPP)
+       CPP = "cl /EP /C /nologo";
+#endif /* AFS_NT40_ENV */
+    
 #ifdef AFS_AIX32_ENV
     /*
      * The following signal action for AIX is necessary so that in case of a