It's the caller's responsibility to free that memory (and snmp_free_pdu()
will).

  Bill


On Wed, Mar 12, 2014 at 11:28 AM, John Zavgren <john.zavg...@ll.mit.edu>wrote:

>  Nevertheless...
> The memory that is allocated at lines 3715 and 3724 is leaked at line 3795.
>
> Allocations:
>
> *     */*
> *    sec_params = data;*
> *    pdu->contextEngineID = (u_char *) calloc(1, SNMP_MAX_ENG_SIZE);*
> * <---------------- FIRST ALLOCATION *
> *    pdu->contextEngineIDLen = SNMP_MAX_ENG_SIZE;*
>
> *    /**
> *     * Note: there is no length limit on the msgAuthoritativeEngineID
> field,*
> *     * although we would EXPECT it to be limited to 32 (the SnmpEngineID
> TC*
> *     * limit).  We'll use double that here to be on the safe side.  *
> *     */*
>
> *    pdu->securityEngineID = (u_char *) calloc(1, SNMP_MAX_ENG_SIZE * 2);*
> * <--------------- SECOND ALLOCATION *
> *    pdu->securityEngineIDLen = SNMP_MAX_ENG_SIZE * 2;*
> *    pdu->securityName = (char *) calloc(1, SNMP_MAX_SEC_NAME_SIZE);*
> *    pdu->securityNameLen = SNMP_MAX_SEC_NAME_SIZE;*
>
> Location of leaks:
>
> *    if (ret_val != SNMPERR_SUCCESS) {*
> *        DEBUGDUMPSECTION("recv", "ScopedPDU");*
> *        /**
> *         * Parse as much as possible -- though I don't see the point?
> [jbpn].  *
> *         */*
> *        if (cp) {*
> *            cp = snmpv3_scopedPDU_parse(pdu, cp, &pdu_buf_len);*
> *        }*
> *        if (cp) {*
> *            DEBUGPRINTPDUTYPE("recv", *cp);*
> *            snmp_pdu_parse(pdu, cp, &pdu_buf_len);*
> *            DEBUGINDENTADD(-8);*
> *        } else {*
> *            DEBUGINDENTADD(-4);*
> *        }*
>
> *        SNMP_FREE(mallocbuf);*
> *        return ret_val;*
> * <----------------------- TWO LEAKS OCCUR HERE **    }*
>
>
>
>
> On 03/12/2014 11:06 AM, John Zavgren wrote:
>
> Dear List:
>
> Let me apologize... the "memory leak" that I reported, IS NOT a memory
> leak. I should have read my email carefully before sending it.
>
> I'm sorry for any confusion or consternation I may have created. :-(
>
> JZ
> On 03/12/2014 10:55 AM, John Zavgren wrote:
>
> Greetings:
> Memory is allocated in the procedure snmv3_parse(), in the file:
> snmplib/snmp_api.c, at line number 3995, and leaked at line number 4004.
>
>   */**
> *     * securtityParameters OCTET STRING begins after msgGlobalData *
> *     */*
> *    sec_params = data;*
> *    pdu->contextEngineID = (u_char *) calloc(1, SNMP_MAX_ENG_SIZE);
> <----- MEMORY ALLOCATED HERE*
> *    pdu->contextEngineIDLen = SNMP_MAX_ENG_SIZE;*
>
> *    /**
> *     * Note: there is no length limit on the msgAuthoritativeEngineID
> field,*
> *     * although we would EXPECT it to be limited to 32 (the SnmpEngineID
> TC*
> *     * limit).  We'll use double that here to be on the safe side.  *
> *     */*
>
> *    pdu->securityEngineID = (u_char *) calloc(1, SNMP_MAX_ENG_SIZE * 2);
> <------ MEMORY LEAKED HERE*
> *    pdu->securityEngineIDLen = SNMP_MAX_ENG_SIZE * 2;*
> *    pdu->securityName = (char *) calloc(1, SNMP_MAX_SEC_NAME_SIZE);*
> *    pdu->securityNameLen = SNMP_MAX_SEC_NAME_SIZE;*
>
> The fix seems obvious, just delete the first allocation?
>
> The bug is present in the 5-7.2.1 version too, but I'm not using that at
> the moment because it won't compile on my Ubuntu 12.04 machine:
>
> *jzavgren@SNMPTest:~/code/net-snmp-5.7.2.1$
> <jzavgren@SNMPTest:%7E/code/net-snmp-5.7.2.1$> make*
> *making all in /home/jzavgren/code/net-snmp-5.7.2.1/snmplib*
> *make[1]: Entering directory
> `/home/jzavgren/code/net-snmp-5.7.2.1/snmplib'*
> *make[1]: Leaving directory `/home/jzavgren/code/net-snmp-5.7.2.1/snmplib'*
> *making all in /home/jzavgren/code/net-snmp-5.7.2.1/agent*
> *make[1]: Entering directory `/home/jzavgren/code/net-snmp-5.7.2.1/agent'*
> *making all in /home/jzavgren/code/net-snmp-5.7.2.1/agent/helpers*
> *make[2]: Entering directory
> `/home/jzavgren/code/net-snmp-5.7.2.1/agent/helpers'*
> *make[2]: Leaving directory
> `/home/jzavgren/code/net-snmp-5.7.2.1/agent/helpers'*
> *making all in /home/jzavgren/code/net-snmp-5.7.2.1/agent/mibgroup*
> *make[2]: Entering directory
> `/home/jzavgren/code/net-snmp-5.7.2.1/agent/mibgroup'*
> *make[2]: Leaving directory
> `/home/jzavgren/code/net-snmp-5.7.2.1/agent/mibgroup'*
> */bin/bash ../libtool  --mode=link gcc -fno-strict-aliasing -g -O2 -Ulinux
> -Dlinux=linux  -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fno-strict-aliasing
> -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE
> -D_FILE_OFFSET_BITS=64  -I/usr/lib/perl/5.14/CORE   -o snmpd snmpd.lo
> libnetsnmpagent.la <http://libnetsnmpagent.la> libnetsnmpmibs.la
> <http://libnetsnmpmibs.la> ../snmplib/libnetsnmp.la <http://libnetsnmp.la>
> -lm  -Wl,-E  *
> *libtool: link: gcc -fno-strict-aliasing -g -O2 -Ulinux -Dlinux=linux
> -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fno-strict-aliasing -pipe
> -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE
> -D_FILE_OFFSET_BITS=64 -I/usr/lib/perl/5.14/CORE -o .libs/snmpd
> .libs/snmpd.o -Wl,-E  ./.libs/libnetsnmpagent.so -L/usr/local/lib
> -L/usr/lib/perl/5.14/CORE ./.libs/libnetsnmpmibs.so
> /home/jzavgren/code/net-snmp-5.7.2.1/agent/.libs/libnetsnmpagent.so
> /home/jzavgren/code/net-snmp-5.7.2.1/snmplib/.libs/libnetsnmp.so -lperl
> -ldl -lpthread -lc -lcrypt ../snmplib/.libs/libnetsnmp.so -lrt -lcrypto
> -lm  -Wl,-rpath -Wl,//lib*
> *./.libs/libnetsnmpagent.so: undefined reference to
> `netsnmp_udp6_parse_security'*
> *./.libs/libnetsnmpagent.so: undefined reference to
> `netsnmp_UDPIPv6Domain'*
> *./.libs/libnetsnmpagent.so: undefined reference to
> `netsnmp_udp6_getSecName'*
> *./.libs/libnetsnmpagent.so: undefined reference to
> `netsnmp_TCPIPv6Domain'*
> *collect2: ld returned 1 exit status*
> *make[1]: *** [snmpd] Error 1*
> *make[1]: Leaving directory `/home/jzavgren/code/net-snmp-5.7.2.1/agent'*
> *make: *** [subdirs] Error 1*
>
>
> --
> Dr. John Zavgren, Cyber Systems and Technology Group
> voice: 781-981-8236
> email: john.zavg...@ll.mit.edu
> MIT Lincoln Laboratory
> 244 Wood Street
> Lexington, MA 02420-9185
> www: http://www.ll.mit.edu/CST
>
>
> --
> Dr. John Zavgren, Cyber Systems and Technology Group
> voice: 781-981-8236
> email: john.zavg...@ll.mit.edu
> MIT Lincoln Laboratory
> 244 Wood Street
> Lexington, MA 02420-9185
> www: http://www.ll.mit.edu/CST
>
>
> --
> Dr. John Zavgren, Cyber Systems and Technology Group
> voice: 781-981-8236
> email: john.zavg...@ll.mit.edu
> MIT Lincoln Laboratory
> 244 Wood Street
> Lexington, MA 02420-9185
> www: http://www.ll.mit.edu/CST
>
>
>
> ------------------------------------------------------------------------------
> Learn Graph Databases - Download FREE O'Reilly Book
> "Graph Databases" is the definitive new guide to graph databases and their
> applications. Written by three acclaimed leaders in the field,
> this first edition is now available. Download your free book today!
> http://p.sf.net/sfu/13534_NeoTech
> _______________________________________________
> Net-snmp-coders mailing list
> Net-snmp-coders@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/net-snmp-coders
>
>
------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and their
applications. Written by three acclaimed leaders in the field,
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/13534_NeoTech
_______________________________________________
Net-snmp-coders mailing list
Net-snmp-coders@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/net-snmp-coders

Reply via email to