aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin Berger <j.david.berger@gmail.com>2018-04-21 18:48:30 -0600
committerJustin Berger <j.david.berger@gmail.com>2018-04-21 18:48:30 -0600
commitbc96509c719da116c5e0ebcdb39e082def15d306 (patch)
treef0c520a5ddbfb950fa9ce6719ea50668f59c3fe7
parent42f051a9c761610bd0037d2fea85accd1cd0455b (diff)
downloadlibsurvive-bc96509c719da116c5e0ebcdb39e082def15d306.tar.gz
libsurvive-bc96509c719da116c5e0ebcdb39e082def15d306.tar.bz2
Fixed heap access error
-rw-r--r--Makefile2
-rw-r--r--src/survive_driverman.c42
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 <string.h>
#include <stdio.h>
+#include <string.h>
-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]);
}
}
-