More memory checks
authorJames Golovich <james@gnuinter.net>
Sat, 23 Oct 2004 07:03:01 +0000 (07:03 +0000)
committerJames Golovich <james@gnuinter.net>
Sat, 23 Oct 2004 07:03:01 +0000 (07:03 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@4056 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_iax2.c
channels/chan_sip.c
res/res_monitor.c
res/res_odbc.c

index eb704a9..3e995e8 100755 (executable)
@@ -6411,9 +6411,11 @@ static struct iax2_peer *build_peer(const char *name, struct ast_variable *v, in
        } else {
                ast_mutex_unlock(&peerl.lock);
                peer = malloc(sizeof(struct iax2_peer));
-               memset(peer, 0, sizeof(struct iax2_peer));
-               peer->expire = -1;
-               peer->pokeexpire = -1;
+               if (peer) {
+                       memset(peer, 0, sizeof(struct iax2_peer));
+                       peer->expire = -1;
+                       peer->pokeexpire = -1;
+               }
        }
        if (peer) {
                peer->messagedetail = globalmessagedetail;
@@ -6589,7 +6591,8 @@ static struct iax2_user *build_user(const char *name, struct ast_variable *v, in
        } else {
                ast_mutex_unlock(&userl.lock);
                user = malloc(sizeof(struct iax2_user));
-               memset(user, 0, sizeof(struct iax2_user));
+               if (user)
+                       memset(user, 0, sizeof(struct iax2_user));
        }
        
        if (user) {
index f70cd75..1531dd0 100755 (executable)
@@ -8164,6 +8164,8 @@ static struct sip_peer *temp_peer(char *name)
 {
        struct sip_peer *peer;
        peer = malloc(sizeof(struct sip_peer));
+       if (!peer)
+               return NULL;
        memset(peer, 0, sizeof(struct sip_peer));
        peer->expire = -1;
        peer->pokeexpire = -1;
@@ -8228,12 +8230,14 @@ static struct sip_peer *build_peer(const char *name, struct ast_variable *v, int
        } else {
                ast_mutex_unlock(&peerl.lock);
                peer = malloc(sizeof(struct sip_peer));
-               memset(peer, 0, sizeof(struct sip_peer));
-               peer->expire = -1;
-               peer->pokeexpire = -1;
+               if (peer) {
+                       memset(peer, 0, sizeof(struct sip_peer));
+                       peer->expire = -1;
+                       peer->pokeexpire = -1;
+               }
        }
-       peer->lastmsgssent = -1;
        if (peer) {
+               peer->lastmsgssent = -1;
                if (!found) {
                        strncpy(peer->name, name, sizeof(peer->name)-1);
                        strncpy(peer->context, default_context, sizeof(peer->context)-1);
index c36460c..9662958 100755 (executable)
@@ -90,6 +90,11 @@ int ast_monitor_start(       struct ast_channel *chan, const char *format_spec,
                }
 
                monitor = malloc(sizeof(struct ast_channel_monitor));
+               if (!monitor) {
+                       if (need_lock) 
+                               ast_mutex_unlock(&chan->lock);
+                       return -1;
+               }
                memset(monitor, 0, sizeof(struct ast_channel_monitor));
 
                /* Determine file names */
@@ -391,6 +396,11 @@ static int start_monitor_action(struct mansession *s, struct message *m)
        if ((!fname) || (ast_strlen_zero(fname))) {
                // No filename base specified, default to channel name as per CLI
                fname = malloc (FILENAME_MAX);
+               if (!fname) {
+                       astman_send_error(s, m, "Could not start monitoring channel");
+                       ast_mutex_unlock(&c->lock);
+                       return 0;
+               }
                memset(fname, 0, FILENAME_MAX);
                strncpy(fname, c->name, FILENAME_MAX-1);
                // Channels have the format technology/channel_name - have to replace that / 
index c6f432a..dde4335 100755 (executable)
@@ -99,10 +99,12 @@ static int load_odbc_config(void)
                        if (!strcmp(cat, "ENV")) {
                                for (v = ast_variable_browse(config, cat); v; v = v->next) {
                                        env_var = malloc(strlen(v->name) + strlen(v->value) + 2);
-                                       sprintf(env_var, "%s=%s", v->name, v->value);
-                                       ast_log(LOG_NOTICE, "Adding ENV var: %s=%s\n", v->name, v->value);
-                                       putenv(env_var);
-                                       free(env_var);
+                                       if (env_var) {
+                                               sprintf(env_var, "%s=%s", v->name, v->value);
+                                               ast_log(LOG_NOTICE, "Adding ENV var: %s=%s\n", v->name, v->value);
+                                               putenv(env_var);
+                                               free(env_var);
+                                       }
                                }
 
                        cat = ast_category_browse(config, cat);
@@ -222,6 +224,8 @@ odbc_obj *new_odbc_obj(char *name, char *dsn, char *username, char *password)
        static odbc_obj *new;
 
        new = malloc(sizeof(odbc_obj));
+       if (!new)
+               return NULL;
        memset(new, 0, sizeof(odbc_obj));
        new->env = SQL_NULL_HANDLE;