diff --git a/minidlna.c b/minidlna.c index 5e3f0a1..9e3feb8 100644 --- a/minidlna.c +++ b/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; iuuid, sizeof(sub->uuid)); + } +} + /* notifies all subscribers of a SystemUpdateID change */ void upnp_event_var_change_notify(enum subscriber_service_enum service) diff --git a/upnpevents.h b/upnpevents.h index c9748af..5dcd0d9 100644 --- a/upnpevents.h +++ b/upnpevents.h @@ -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);