Author: kevans
Date: Mon Dec 30 15:54:36 2019
New Revision: 356204
URL: https://svnweb.freebsd.org/changeset/base/356204

Log:
  inetd: don't leak `policy` on return
  
  sep->se_policy gets a strdup'd version of policy, so we don't need it to
  stick around afterwards.
  
  While here, remove a couple of NULL checks prior to free(policy).
  
  CID:          1006865
  MFC after:    3 days

Modified:
  head/usr.sbin/inetd/inetd.c

Modified: head/usr.sbin/inetd/inetd.c
==============================================================================
--- head/usr.sbin/inetd/inetd.c Mon Dec 30 14:38:06 2019        (r356203)
+++ head/usr.sbin/inetd/inetd.c Mon Dec 30 15:54:36 2019        (r356204)
@@ -1629,12 +1629,10 @@ more:
                        for (p = cp + 2; p && *p && isspace(*p); p++)
                                ;
                        if (*p == '\0') {
-                               if (policy)
-                                       free(policy);
+                               free(policy);
                                policy = NULL;
                        } else if (ipsec_get_policylen(p) >= 0) {
-                               if (policy)
-                                       free(policy);
+                               free(policy);
                                policy = newstr(p);
                        } else {
                                syslog(LOG_ERR,
@@ -1969,6 +1967,7 @@ more:
                LIST_INIT(&sep->se_conn[i]);
 #ifdef IPSEC
        sep->se_policy = policy ? newstr(policy) : NULL;
+       free(policy);
 #endif
        return (sep);
 }
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to