Changeset 5e5b6ca
- Timestamp:
- 02/13/19 11:37:55 (2 years ago)
- Branches:
- develop
- Children:
- b9af56e
- Parents:
- c876f29
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
lib/protocols_l2.c
rc876f29 r5e5b6ca 112 112 uint16_t ethertype; 113 113 libtrace_layer2_headers_t *r; 114 int allocated_headers = 0; 114 115 115 116 if (packet == NULL) { … … 136 137 return NULL; 137 138 } 138 r->header = calloc(1, sizeof(libtrace_layer2_header_t)); 139 /* Alloc enough space for 10 headers */ 140 r->header = calloc(1, sizeof(libtrace_layer2_header_t)*10); 139 141 if (r->header == NULL) { 140 142 trace_set_err(packet->trace, TRACE_ERR_OUT_OF_MEMORY, … … 143 145 return NULL; 144 146 } 147 allocated_headers = 10; 145 148 146 149 /* get the first layer2 header */ … … 198 201 } 199 202 200 r->header = realloc(r->header, 201 sizeof(libtrace_layer2_header_t)*(r->num+1)); 203 if ((r->num+1) >= allocated_headers) { 204 allocated_headers += 10; 205 r->header = realloc(r->header, 206 sizeof(libtrace_layer2_header_t)*allocated_headers); 207 208 if (r->header == NULL) { 209 trace_set_err(packet->trace, TRACE_ERR_OUT_OF_MEMORY, 210 "Unable to allocate memory in trace_get_layer2_headers()"); 211 free(r); 212 return NULL; 213 } 214 } 215 202 216 r->header[r->num].ethertype = ethertype; 203 217 r->header[r->num++].data = ptr; … … 214 228 215 229 /* If no results were found free memory now and just return NULL */ 216 if (r->num ) {230 if (r->num == 0) { 217 231 free(r->header); 218 232 free(r); … … 235 249 fprintf(stderr, "NULL packet passed into trace_get_outermost_vlan()\n"); 236 250 *vlanptr = NULL; 237 *remaining = rem;251 *remaining = 0; 238 252 return vlanid; 239 253 } … … 243 257 if (ptr == NULL) { 244 258 *vlanptr = NULL; 245 *remaining = rem;259 *remaining = 0; 246 260 return vlanid; 247 261 } … … 253 267 254 268 *vlanptr = NULL; 255 *remaining = rem;269 *remaining = 0; 256 270 return vlanid; 257 271 } … … 290 304 /* No layer2 */ 291 305 if (ptr == NULL) { 292 *remaining = rem;306 *remaining = 0; 293 307 *mplsptr = NULL; 294 308 return mplslabel; … … 299 313 if (rem == 0 || ptr == NULL) { 300 314 301 *remaining = rem;315 *remaining = 0; 302 316 *mplsptr = NULL; 303 317 return mplslabel;
Note: See TracChangeset
for help on using the changeset viewer.