[BACK]Return to snmp.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / snmp

Diff for /src/usr.bin/snmp/snmp.c between version 1.5 and 1.6

version 1.5, 2019/09/18 09:52:47 version 1.6, 2019/09/18 09:54:36
Line 359 
Line 359 
 snmp_package(struct snmp_agent *agent, struct ber_element *pdu, size_t *len)  snmp_package(struct snmp_agent *agent, struct ber_element *pdu, size_t *len)
 {  {
         struct ber ber;          struct ber ber;
         struct ber_element *message, *scopedpdu = NULL, *secparams;          struct ber_element *message, *scopedpdu = NULL, *secparams, *encpdu;
         ssize_t securitysize, ret;          ssize_t securitysize, ret;
         size_t secparamsoffset;          size_t secparamsoffset;
         char *securityparams = NULL, *packet = NULL;          char *securityparams = NULL, *packet = NULL;
Line 402 
Line 402 
                         ber_free_elements(scopedpdu);                          ber_free_elements(scopedpdu);
                         goto fail;                          goto fail;
                 }                  }
                   if (agent->v3->level & SNMP_MSGFLAG_PRIV) {
                           if ((encpdu = agent->v3->sec->encpdu(agent, scopedpdu,
                               cookie)) == NULL)
                                   goto fail;
                           ber_free_elements(scopedpdu);
                           scopedpdu = encpdu;
                   }
                 if (ber_printf_elements(message, "d{idxd}xe",                  if (ber_printf_elements(message, "d{idxd}xe",
                     agent->version, msgid, UDP_MAXPACKET, &(agent->v3->level),                      agent->version, msgid, UDP_MAXPACKET, &(agent->v3->level),
                     (size_t) 1, agent->v3->sec->model, securityparams,                      (size_t) 1, agent->v3->sec->model, securityparams,
Line 450 
Line 457 
         size_t msgflagslen, secparamslen;          size_t msgflagslen, secparamslen;
         struct ber_element *message = NULL, *payload, *scopedpdu, *ctxname;          struct ber_element *message = NULL, *payload, *scopedpdu, *ctxname;
         off_t secparamsoffset;          off_t secparamsoffset;
         char *engineid;          char *encpdu, *engineid;
         size_t engineidlen;          size_t encpdulen, engineidlen;
           void *cookie = NULL;
   
         bzero(&ber, sizeof(ber));          bzero(&ber, sizeof(ber));
         ber_set_application(&ber, smi_application);          ber_set_application(&ber, smi_application);
Line 485 
Line 493 
                 if (msgflagslen != 1)                  if (msgflagslen != 1)
                         goto fail;                          goto fail;
                 if (agent->v3->sec->parseparams(agent, buf, buflen,                  if (agent->v3->sec->parseparams(agent, buf, buflen,
                     secparamsoffset, secparams, secparamslen,                      secparamsoffset, secparams, secparamslen, msgflags[0],
                     msgflags[0]) == -1)                      &cookie) == -1) {
                           cookie = NULL;
                         goto fail;                          goto fail;
                   }
                   if (msgflags[0] & SNMP_MSGFLAG_PRIV) {
                           if (ber_scanf_elements(scopedpdu, "x", &encpdu,
                               &encpdulen) == -1)
                                   goto fail;
                           if ((scopedpdu = agent->v3->sec->decpdu(agent, encpdu,
                               encpdulen, cookie)) == NULL)
                                   goto fail;
                   }
                 if (ber_scanf_elements(scopedpdu, "{xeS{", &engineid,                  if (ber_scanf_elements(scopedpdu, "{xeS{", &engineid,
                     &engineidlen, &ctxname) == -1)                      &engineidlen, &ctxname) == -1)
                         goto fail;                          goto fail;
Line 505 
Line 523 
                 }                  }
   
                 ber_free_elements(message);                  ber_free_elements(message);
                   agent->v3->sec->freecookie(cookie);
                 return pdu;                  return pdu;
         }          }
         /* NOTREACHED */          /* NOTREACHED */
   
 fail:  fail:
           if (version == SNMP_V3)
                   agent->v3->sec->freecookie(cookie);
         ber_free_elements(message);          ber_free_elements(message);
         return NULL;          return NULL;
 }  }

Legend:
Removed from v.1.5  
changed lines
  Added in v.1.6