]> git.ozlabs.org Git - ppp.git/blobdiff - pppd/options.c
pppd: Eliminate memory leak with multiple instances of a string option
[ppp.git] / pppd / options.c
index e9042d1f64e2b5bbf05c74a91587f049f011c2b8..f66b7657bc31c9b197b8449fa12902293fdf85d1 100644 (file)
@@ -776,10 +776,13 @@ process_option(opt, cmd, argv)
        if (opt->flags & OPT_STATIC) {
            strlcpy((char *)(opt->addr), *argv, opt->upper_limit);
        } else {
+           char **optptr = (char **)(opt->addr);
            sv = strdup(*argv);
            if (sv == NULL)
                novm("option argument");
-           *(char **)(opt->addr) = sv;
+           if (*optptr)
+               free(*optptr);
+           *optptr = sv;
        }
        break;