Closed csylvain closed 3 years ago
(i am inclined to add a verbose debugging command line option)
it appears the problem is in loadProperty() in property.c when the following is encountered
property:: radio.midi_filename=
program apparently wrote out the line in the .props file, and the filename is empty
program blows up on reloading a config because of "radio.midi_filename=\n"
strtok(s,"=") returns "radio.midi_filename"
strtok(NULL,"\n") returns 0x0 <--- NOT "" (null str) but 0x0 (NULL)
strlen(0x0) --> SIGSEGV
one small change in one source file -- no need for a complete fork and pull request
fix problem with the following changes
diff --git a/property.c b/property.c
index ed60d02..2fc6f09 100644
--- a/property.c
+++ b/property.c
@@ -53,16 +53,23 @@ void loadProperties(char* filename) {
if(f) {
while(fgets(string,sizeof(string),f)) {
- if(string[0]!='#') {
+ if(string[0]!='#') { // content is not comment line
+// fprintf(stderr,"loading property:: %s\n",string);
name=strtok(string,"=");
value=strtok(NULL,"\n");
+ if (value == 0x0) // strtok() indicates 'no token found'. value is NULL.
+ value = ""; // set property value to <empty string>.
+
property=malloc(sizeof(PROPERTY));
property->name=malloc(strlen(name)+1);
strcpy(property->name,name);
+
property->value=malloc(strlen(value)+1);
strcpy(property->value,value);
property->next_property=properties;
+
properties=property;
+
if(strcmp(name,"property_version")==0) {
version=atof(value);
}
this issue report prompted commit by g0orx to address the issue in loadProperties()
fb om de KB3CS
program starts up successfully only in the absence of.props file.
build identification
segmentation fault message
backtrace