/* * netsniff-ng - the packet sniffing beast * Copyright 2009 - 2013 Daniel Borkmann. * Subject to the GPL, version 2. */ #include #include #include "hash.h" #include "xmalloc.h" #include "oui.h" #include "str.h" static struct hash_table oui; static bool initialized = false; struct vendor_id { unsigned int id; char *vendor; struct vendor_id *next; }; const char *lookup_vendor(unsigned int id) { struct vendor_id *v; v = lookup_hash(id, &oui); while (v && id != v->id) v = v->next; return (v && id == v->id ? v->vendor : NULL); } void dissector_init_oui(void) { FILE *fp; char buff[128], *ptr, *end; struct vendor_id *v; void **pos; if (initialized) return; fp = fopen(PREFIX_STRING "/etc/netsniff-ng/oui.conf", "r"); if (!fp) panic("No oui.conf found!\n"); memset(buff, 0, sizeof(buff)); while (fgets(buff, sizeof(buff), fp) != NULL) { buff[sizeof(buff) - 1] = 0; ptr = buff; v = xmalloc(sizeof(*v)); v->id = strtol(ptr, &end, 0); /* not a valid line, skip */ if (v->id == 0 && end == ptr) { xfree(v); continue; } ptr = strstr(buff, ", "); /* likewise */ if (!ptr) { xfree(v); continue; } ptr += strlen(", "); ptr = strtrim_right(ptr, '\n'); ptr = strtrim_right(ptr, ' '); v->vendor = xstrdup(ptr); v->next = NULL; pos = insert_hash(v->id, v, &oui); if (pos) { v->next = *pos; *pos = v; } memset(buff, 0, sizeof(buff)); } fclose(fp); initialized = true; } static int dissector_cleanup_oui_hash(void *ptr) { struct vendor_id *tmp, *v = ptr; if (!ptr) return 0; while ((tmp = v->next)) { xfree(v->vendor); xfree(v); v = tmp; } xfree(v->vendor); xfree(v); return 0; } void dissector_cleanup_oui(void) { for_each_hash(&oui, dissector_cleanup_oui_hash); free_hash(&oui); initialized = false; } e/net/irda/qos.h?h=nds-private-remove'>logtreecommitdiff
diff options
context:
space:
mode:
authorColin Ian King <colin.king@canonical.com>2017-01-11 15:36:20 +0000
committerMark Brown <broonie@kernel.org>2017-01-18 16:32:44 +0000
commitb98acbff9a05b371c5f0ca6e44a3af8ce9274379 (patch)
treed6835885f859a456e62ce93621041138d6a54f9b /include/net/irda/qos.h
parentd00b74613fb18dfd0a5aa99270ee2e72d5c808d7 (diff)
regulator: twl6030: fix range comparison, allowing vsel = 59
The range min_uV > 1350000 && min_uV <= 150000 is never reachable because of a typo in the previous range check and hence vsel = 59 is never reached. Fix the previous range check to enable the vsel = 59 setting. Fixes CoverityScan CID#728454 ("Logially dead code") Signed-off-by: Colin Ian King <colin.king@canonical.com> Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'include/net/irda/qos.h')