Create binary versions of signature functions
[asterisk/asterisk.git] / res / res_indications.c
index 0983efb..b289612 100755 (executable)
@@ -18,7 +18,6 @@
 #include <string.h>
 #include <ctype.h>
 #include <stdlib.h>
-#include <pthread.h>
 #include <errno.h>
 #include <sys/types.h>
 #include <sys/stat.h>
@@ -164,7 +163,7 @@ static int handle_show_indications(int fd, int argc, char *argv[])
                                        j += snprintf(buf+j,sizeof(buf)-j,"%d,",tz->ringcadance[i]);
                                }
                                if (tz->nrringcadance) j--;
-                               strncpy(buf+j,"\n",sizeof(buf)-j);
+                               strncpy(buf+j,"\n",sizeof(buf)-j-1);
                                ast_cli(fd,buf);
                                for (ts=tz->tones; ts; ts=ts->next)
                                        ast_cli(fd,"%-7.7s %-15.15s %s\n",tz->country,ts->name,ts->data);
@@ -238,10 +237,11 @@ static int ind_load_module(void)
                tones = malloc(sizeof(struct tone_zone));
                if (!tones) {
                        ast_log(LOG_WARNING,"Out of memory\n");
+                       ast_destroy(cfg);
                        return -1;
                }
                memset(tones,0,sizeof(struct tone_zone));
-               strncpy(tones->country,cxt,sizeof(tones->country));
+               strncpy(tones->country,cxt,sizeof(tones->country) - 1);
 
                v = ast_variable_browse(cfg, cxt);
                while(v) {
@@ -261,6 +261,7 @@ static int ind_load_module(void)
                                        tmp = realloc(tones->ringcadance,(tones->nrringcadance+1)*sizeof(int));
                                        if (!tmp) {
                                                ast_log(LOG_WARNING, "Out of memory\n");
+                                               ast_destroy(cfg);
                                                return -1;
                                        }
                                        tones->ringcadance = tmp;
@@ -277,10 +278,11 @@ static int ind_load_module(void)
                                        struct tone_zone* azone = malloc(sizeof(struct tone_zone));
                                        if (!azone) {
                                                ast_log(LOG_WARNING,"Out of memory\n");
+                                               ast_destroy(cfg);
                                                return -1;
                                        }
                                        memset(azone,0,sizeof(struct tone_zone));
-                                       strncpy(azone->country,country,sizeof(azone->country));
+                                       strncpy(azone->country, country, sizeof(azone->country) - 1);
                                        strncpy(azone->alias, cxt, sizeof(azone->alias)-1);
                                        if (ast_register_indication_country(azone)) {
                                                ast_log(LOG_WARNING, "Unable to register indication alias at line %d.\n",v->lineno);
@@ -303,6 +305,7 @@ static int ind_load_module(void)
                                ts = malloc(sizeof(struct tone_zone_sound));
                                if (!ts) {
                                        ast_log(LOG_WARNING, "Out of memory\n");
+                                       ast_destroy(cfg);
                                        return -1;
                                }
                                ts->next = NULL;