| /* HEADER Test sprint_realloc_variable with -OQ */ |
| |
| /* |
| * Check that sprint_realloc_variable does not crash when it prints |
| * a variable with NULL type, while MIG says it's different type (INTEGER, ...). |
| * We will use MIB definition of nlmLogVariableTable, which has a column |
| * for most of the MIB types. |
| */ |
| static oid objid[] = { |
| 1, 3, 6, 1, 2, 1, 92, 1, 3, 2, 1, 4 |
| }; |
| |
| u_char *buf; |
| size_t buf_len, out_len; |
| int buf_overflow, i; |
| char mibdir[PATH_MAX]; |
| int ret; |
| |
| snprintf(mibdir, sizeof(mibdir), "%s/%s", ABS_SRCDIR, "mibs"); |
| netsnmp_ds_set_string(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_MIBDIRS, mibdir); |
| netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_QUICKE_PRINT, TRUE); |
| |
| init_snmp("T021"); |
| |
| netsnmp_variable_list variable; |
| variable.next_variable = NULL; |
| variable.name = objid; |
| variable.name_length = sizeof(objid) / sizeof(objid[0]); |
| variable.type = ASN_NULL; |
| variable.val.integer = NULL; |
| variable.val_len = 0; |
| |
| |
| buf = NULL; |
| buf_len = out_len = buf_overflow = 0; |
| |
| /* Try to format variable with nlmLogVariableEntry.4 - nlmLogVariableEntry.11 |
| * OIDs and with NULL type. |
| */ |
| for (i=4; i<=11; i++) { |
| buf = NULL; |
| buf_len = out_len = buf_overflow = 0; |
| objid[11] = i; |
| ret = sprint_realloc_variable(&buf, &buf_len, &out_len, 1, objid, |
| sizeof(objid) / sizeof(objid[0]), &variable); |
| OKF(ret == 1, ("sprint_realloc_variable for %d returned %d: %s, expected 1", |
| i, ret, buf)); |
| free(buf); |
| } |
| |
| snmp_shutdown("T021"); |