From bc96509c719da116c5e0ebcdb39e082def15d306 Mon Sep 17 00:00:00 2001 From: Justin Berger Date: Sat, 21 Apr 2018 18:48:30 -0600 Subject: Fixed heap access error --- Makefile | 2 +- src/survive_driverman.c | 42 ++++++++++++++++++------------------------ 2 files changed, 19 insertions(+), 25 deletions(-) diff --git a/Makefile b/Makefile index 3e460e4..2c727df 100644 --- a/Makefile +++ b/Makefile @@ -25,7 +25,7 @@ endif CC?=gcc -ifdef EXTRA_WARNINGS +ifdef USE_ASAN CFLAGS+=-fsanitize=address -fsanitize=undefined endif diff --git a/src/survive_driverman.c b/src/survive_driverman.c index 2afaf65..ac5d1f6 100644 --- a/src/survive_driverman.c +++ b/src/survive_driverman.c @@ -4,51 +4,45 @@ // #include "survive_internal.h" -#include #include +#include -static void * Drivers[MAX_DRIVERS]; -static const char * DriverNames[MAX_DRIVERS]; +static void *Drivers[MAX_DRIVERS]; +static const char *DriverNames[MAX_DRIVERS]; static int NrDrivers; -void RegisterDriver( const char * element, void * data ) -{ +void RegisterDriver(const char *element, void *data) { Drivers[NrDrivers] = data; DriverNames[NrDrivers] = element; NrDrivers++; } -void * GetDriver( const char * element ) -{ +void *GetDriver(const char *element) { int i; - for( i = 0; i < NrDrivers; i++ ) - { - if( strcmp( element, DriverNames[i] ) == 0 ) return Drivers[i]; + for (i = 0; i < NrDrivers; i++) { + if (strcmp(element, DriverNames[i]) == 0) + return Drivers[i]; } return 0; } -const char * GetDriverNameMatching( const char * prefix, int place ) -{ +const char *GetDriverNameMatching(const char *prefix, int place) { int i; - int prefixlen = (int)strlen( prefix ); + int prefixlen = (int)strlen(prefix); - for( i = 0; i < NrDrivers; i++ ) - { - if( memcmp( prefix, DriverNames[i], prefixlen ) == 0 ) - if( 0 == (place--) ) + for (i = 0; i < NrDrivers; i++) { + fprintf(stderr, "%s %s\n", prefix, DriverNames[i]); + if (strncmp(prefix, DriverNames[i], prefixlen) == 0) + if (0 == (place--)) return DriverNames[i]; } return 0; } -void ListDrivers() -{ +void ListDrivers() { int i; - printf( "Drivers (%d/%d):\n", NrDrivers, MAX_DRIVERS ); - for( i = 0; i < NrDrivers; i++ ) - { - printf( " %s\n", DriverNames[i] ); + printf("Drivers (%d/%d):\n", NrDrivers, MAX_DRIVERS); + for (i = 0; i < NrDrivers; i++) { + printf(" %s\n", DriverNames[i]); } } - -- cgit v1.2.3