Author: ngie
Date: Sat Jan  7 08:44:15 2017
New Revision: 311593
URL: https://svnweb.freebsd.org/changeset/base/311593

Log:
  MFC r310931,r310942,r310988:
  
  r310931:
  
  Use strdup in snmp_parse_server(..) when possible instead of malloc+strcpy
  
  This simplifies the code and mutes a Coverity warning about sc->cport being
  improperly allocated
  
  CID:          1018247
  
  r310942:
  
  Unbreak the build by passing the string to strdup, not its length
  
  Pointyhat to: ngie
  
  r310988:
  
  snmp_discover_engine: fix up req/resp (PDU object) handling a bit
  
  - Call snmp_pdu_free on req and resp when done with the objects
  - Call snmp_pdu_free on req before calling snmp_pdu_create on it
    again

Modified:
  stable/10/contrib/bsnmp/lib/snmpclient.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/contrib/bsnmp/lib/snmpclient.c
==============================================================================
--- stable/10/contrib/bsnmp/lib/snmpclient.c    Sat Jan  7 08:42:14 2017        
(r311592)
+++ stable/10/contrib/bsnmp/lib/snmpclient.c    Sat Jan  7 08:44:15 2017        
(r311593)
@@ -1793,12 +1793,14 @@ snmp_discover_engine(char *passwd)
                return (0);
        }
 
+       snmp_pdu_free(&req);
+
        snmp_pdu_create(&req, SNMP_PDU_GET);
        req.engine.engine_boots = 0;
        req.engine.engine_time = 0;
 
        if (snmp_dialog(&req, &resp) == -1)
-                return (-1);
+               return (-1);
 
        if (resp.version != req.version) {
                seterr(&snmp_client, "wrong version");
@@ -1813,6 +1815,9 @@ snmp_discover_engine(char *passwd)
        snmp_client.engine.engine_boots = resp.engine.engine_boots;
        snmp_client.engine.engine_time = resp.engine.engine_time;
 
+       snmp_pdu_free(&req);
+       snmp_pdu_free(&resp);
+
        return (0);
 }
 
@@ -1937,20 +1942,18 @@ snmp_parse_server(struct snmp_client *sc
                }
                /* port */
                free(sc->cport);
-               if ((sc->cport = malloc(strlen(p + 1) + 1)) == NULL) {
+               if ((sc->cport = strdup(p + 1)) == NULL) {
                        seterr(sc, "%s", strerror(errno));
                        return (-1);
                }
-               strcpy(sc->cport, p + 1);
 
        } else if (p > s) {
                /* host */
                free(sc->chost);
-               if ((sc->chost = malloc(strlen(s) + 1)) == NULL) {
+               if ((sc->chost = strdup(s)) == NULL) {
                        seterr(sc, "%s", strerror(errno));
                        return (-1);
                }
-               strcpy(sc->chost, s);
        }
        return (0);
 }
_______________________________________________
svn-src-stable-10@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-stable-10
To unsubscribe, send any mail to "svn-src-stable-10-unsubscr...@freebsd.org"

Reply via email to