* Miscellaneous minor cleanups for string termination and unfreed memory at exit.
This commit is contained in:
parent
0687d8f6d8
commit
6fcd16985e
55
minidlna.c
55
minidlna.c
@ -211,8 +211,7 @@ getfriendlyname(char * buf, int len)
|
||||
|
||||
if( gethostname(hn, 256) == 0 )
|
||||
{
|
||||
strncpy(buf, hn, len-1);
|
||||
buf[len] = '\0';
|
||||
strncpyt(buf, hn, len);
|
||||
dot = strchr(buf, '.');
|
||||
if( dot )
|
||||
*dot = '\0';
|
||||
@ -242,8 +241,7 @@ getfriendlyname(char * buf, int len)
|
||||
key = strchr(val, ' ');
|
||||
if( key )
|
||||
{
|
||||
strncpy(modelnumber, key+1, MODELNUMBER_MAX_LEN);
|
||||
modelnumber[MODELNUMBER_MAX_LEN-1] = '\0';
|
||||
strncpyt(modelnumber, key+1, MODELNUMBER_MAX_LEN);
|
||||
*key = '\0';
|
||||
}
|
||||
snprintf(modelname, MODELNAME_MAX_LEN,
|
||||
@ -251,8 +249,7 @@ getfriendlyname(char * buf, int len)
|
||||
}
|
||||
else if( strcmp(key, "serial") == 0 )
|
||||
{
|
||||
strncpy(serialnumber, val, SERIALNUMBER_MAX_LEN);
|
||||
serialnumber[SERIALNUMBER_MAX_LEN-1] = '\0';
|
||||
strncpyt(serialnumber, val, SERIALNUMBER_MAX_LEN);
|
||||
if( serialnumber[0] == '\0' )
|
||||
{
|
||||
char mac_str[13];
|
||||
@ -344,8 +341,7 @@ init(int argc, char * * argv)
|
||||
int verbose_flag = 0;
|
||||
int options_flag = 0;
|
||||
struct sigaction sa;
|
||||
/*const char * logfilename = 0;*/
|
||||
const char * presurl = 0;
|
||||
const char * presurl = NULL;
|
||||
const char * optionsfile = "/etc/minidlna.conf";
|
||||
char mac_str[13];
|
||||
char * string, * word;
|
||||
@ -437,20 +433,16 @@ init(int argc, char * * argv)
|
||||
runtime_vars.notify_interval = atoi(ary_options[i].value);
|
||||
break;
|
||||
case UPNPSERIAL:
|
||||
strncpy(serialnumber, ary_options[i].value, SERIALNUMBER_MAX_LEN);
|
||||
serialnumber[SERIALNUMBER_MAX_LEN-1] = '\0';
|
||||
strncpyt(serialnumber, ary_options[i].value, SERIALNUMBER_MAX_LEN);
|
||||
break;
|
||||
case UPNPMODEL_NAME:
|
||||
strncpy(modelname, ary_options[i].value, MODELNAME_MAX_LEN);
|
||||
modelname[MODELNAME_MAX_LEN-1] = '\0';
|
||||
strncpyt(modelname, ary_options[i].value, MODELNAME_MAX_LEN);
|
||||
break;
|
||||
case UPNPMODEL_NUMBER:
|
||||
strncpy(modelnumber, ary_options[i].value, MODELNUMBER_MAX_LEN);
|
||||
modelnumber[MODELNUMBER_MAX_LEN-1] = '\0';
|
||||
strncpyt(modelnumber, ary_options[i].value, MODELNUMBER_MAX_LEN);
|
||||
break;
|
||||
case UPNPFRIENDLYNAME:
|
||||
strncpy(friendly_name, ary_options[i].value, FRIENDLYNAME_MAX_LEN);
|
||||
friendly_name[FRIENDLYNAME_MAX_LEN-1] = '\0';
|
||||
strncpyt(friendly_name, ary_options[i].value, FRIENDLYNAME_MAX_LEN);
|
||||
break;
|
||||
case UPNPMEDIADIR:
|
||||
type = ALL_MEDIA;
|
||||
@ -535,7 +527,7 @@ init(int argc, char * * argv)
|
||||
DPRINTF(E_FATAL, L_GENERAL, "Database path not accessible! [%s]\n", path);
|
||||
break;
|
||||
}
|
||||
strncpy(db_path, path, PATH_MAX);
|
||||
strncpyt(db_path, path, PATH_MAX);
|
||||
break;
|
||||
case UPNPLOGDIR:
|
||||
path = realpath(ary_options[i].value, buf);
|
||||
@ -547,7 +539,7 @@ init(int argc, char * * argv)
|
||||
DPRINTF(E_FATAL, L_GENERAL, "Log path not accessible! [%s]\n", path);
|
||||
break;
|
||||
}
|
||||
strncpy(log_path, path, PATH_MAX);
|
||||
strncpyt(log_path, path, PATH_MAX);
|
||||
break;
|
||||
case UPNPINOTIFY:
|
||||
if( (strcmp(ary_options[i].value, "yes") != 0) && !atoi(ary_options[i].value) )
|
||||
@ -601,12 +593,12 @@ init(int argc, char * * argv)
|
||||
if( log_path[0] == '\0' )
|
||||
{
|
||||
if( db_path[0] == '\0' )
|
||||
strncpy(log_path, DEFAULT_LOG_PATH, PATH_MAX);
|
||||
strncpyt(log_path, DEFAULT_LOG_PATH, PATH_MAX);
|
||||
else
|
||||
strncpy(log_path, db_path, PATH_MAX);
|
||||
strncpyt(log_path, db_path, PATH_MAX);
|
||||
}
|
||||
if( db_path[0] == '\0' )
|
||||
strncpy(db_path, DEFAULT_DB_PATH, PATH_MAX);
|
||||
strncpyt(db_path, DEFAULT_DB_PATH, PATH_MAX);
|
||||
|
||||
/* command line arguments processing */
|
||||
for(i=1; i<argc; i++)
|
||||
@ -630,21 +622,16 @@ init(int argc, char * * argv)
|
||||
break;
|
||||
case 's':
|
||||
if(i+1 < argc)
|
||||
strncpy(serialnumber, argv[++i], SERIALNUMBER_MAX_LEN);
|
||||
strncpyt(serialnumber, argv[++i], SERIALNUMBER_MAX_LEN);
|
||||
else
|
||||
DPRINTF(E_ERROR, L_GENERAL, "Option -%c takes one argument.\n", argv[i][1]);
|
||||
serialnumber[SERIALNUMBER_MAX_LEN-1] = '\0';
|
||||
break;
|
||||
case 'm':
|
||||
if(i+1 < argc)
|
||||
strncpy(modelnumber, argv[++i], MODELNUMBER_MAX_LEN);
|
||||
strncpyt(modelnumber, argv[++i], MODELNUMBER_MAX_LEN);
|
||||
else
|
||||
DPRINTF(E_ERROR, L_GENERAL, "Option -%c takes one argument.\n", argv[i][1]);
|
||||
modelnumber[MODELNUMBER_MAX_LEN-1] = '\0';
|
||||
break;
|
||||
/*case 'l':
|
||||
logfilename = argv[++i];
|
||||
break;*/
|
||||
case 'p':
|
||||
if(i+1 < argc)
|
||||
runtime_vars.port = atoi(argv[++i]);
|
||||
@ -819,15 +806,9 @@ init(int argc, char * * argv)
|
||||
|
||||
/* presentation url */
|
||||
if(presurl)
|
||||
{
|
||||
strncpy(presentationurl, presurl, PRESENTATIONURL_MAX_LEN);
|
||||
presentationurl[PRESENTATIONURL_MAX_LEN-1] = '\0';
|
||||
}
|
||||
strncpyt(presentationurl, presurl, PRESENTATIONURL_MAX_LEN);
|
||||
else
|
||||
{
|
||||
snprintf(presentationurl, PRESENTATIONURL_MAX_LEN,
|
||||
"http://%s:%d/", lan_addr[0].str, runtime_vars.port);
|
||||
}
|
||||
strcpy(presentationurl, "/");
|
||||
|
||||
/* set signal handler */
|
||||
memset(&sa, 0, sizeof(struct sigaction));
|
||||
@ -1270,6 +1251,8 @@ shutdown:
|
||||
sql_exec(db, "UPDATE SETTINGS set UPDATE_ID = %u", updateID);
|
||||
sqlite3_close(db);
|
||||
|
||||
upnpevents_removeSubscribers();
|
||||
|
||||
media_path = media_dirs;
|
||||
art_names = album_art_names;
|
||||
while( media_path )
|
||||
|
10
upnpevents.c
10
upnpevents.c
@ -194,6 +194,16 @@ upnpevents_removeSubscriber(const char * sid, int sidlen)
|
||||
return -1;
|
||||
}
|
||||
|
||||
void
|
||||
upnpevents_removeSubscribers(void)
|
||||
{
|
||||
struct subscriber * sub;
|
||||
|
||||
for(sub = subscriberlist.lh_first; sub != NULL; sub = subscriberlist.lh_first) {
|
||||
upnpevents_removeSubscriber(sub->uuid, sizeof(sub->uuid));
|
||||
}
|
||||
}
|
||||
|
||||
/* notifies all subscribers of a SystemUpdateID change */
|
||||
void
|
||||
upnp_event_var_change_notify(enum subscriber_service_enum service)
|
||||
|
@ -61,11 +61,10 @@ upnpevents_addSubscriber(const char * eventurl,
|
||||
const char * callback, int callbacklen,
|
||||
int timeout);
|
||||
|
||||
int
|
||||
upnpevents_removeSubscriber(const char * sid, int sidlen);
|
||||
int upnpevents_removeSubscriber(const char * sid, int sidlen);
|
||||
void upnpevents_removeSubscribers(void);
|
||||
|
||||
int
|
||||
renewSubscription(const char * sid, int sidlen, int timeout);
|
||||
int renewSubscription(const char * sid, int sidlen, int timeout);
|
||||
|
||||
void upnpevents_selectfds(fd_set *readset, fd_set *writeset, int * max_fd);
|
||||
void upnpevents_processfds(fd_set *readset, fd_set *writeset);
|
||||
|
Loading…
x
Reference in New Issue
Block a user