]> git.ipfire.org Git - thirdparty/ntp.git/commitdiff
first verbose --version attempt caused --help to segfault.
authorDave Hart <hart@ntp.org>
Thu, 16 Dec 2010 23:57:51 +0000 (23:57 +0000)
committerDave Hart <hart@ntp.org>
Thu, 16 Dec 2010 23:57:51 +0000 (23:57 +0000)
bk: 4d0aa77fU3Ue99NuAPjkQuvJgt_oUQ

libntp/ntp_libopts.c

index 4a9d11985167a386554e520df1b68f64af060041..f155970019947929e226167f2de34f170bdea0b9 100644 (file)
@@ -28,16 +28,16 @@ ntpOptionProcess(
        char **         argv
        )
 {
-       u_char          Opts[sizeof(*pOpts)];
+       char *          pchOpts;
        char **         ppzFullVersion;
        char *          pzNewFV;
-       const char *    pzAutogenFV;
+       char *          pzAutogenFV;
        size_t          octets;
        int             rc;
 
-       memcpy(Opts, pOpts, sizeof(Opts));
-       ppzFullVersion = (char **)(Opts + offsetof(struct options,
-                                                  pzFullVersion));
+       pchOpts = (void *)pOpts;
+       ppzFullVersion = (char **)(pchOpts + offsetof(tOptions,
+                                                     pzFullVersion));
        pzAutogenFV = *ppzFullVersion;
        octets = strlen(pzAutogenFV) +
                 1 +    /* '\n' */
@@ -46,7 +46,8 @@ ntpOptionProcess(
        pzNewFV = emalloc(octets);
        snprintf(pzNewFV, octets, "%s\n%s", pzAutogenFV, Version);
        *ppzFullVersion = pzNewFV;
-       rc = optionProcess((tOptions *)Opts, argc, argv);
+       rc = optionProcess(pOpts, argc, argv);
+       *ppzFullVersion = pzAutogenFV;
        free(pzNewFV);
 
        return rc;