diff --git a/apps/app_dial.c b/apps/app_dial.c
index d6bf88736d824bdc7dc4ec49b842c40b8093c759..6acbddba71b78ef7eef2e91af03b27cff98fab4a 100755
--- a/apps/app_dial.c
+++ b/apps/app_dial.c
@@ -207,13 +207,19 @@ static struct ast_channel *wait_for_answer(struct ast_channel *in, struct localu
 							if (o->chan->callerid)
 								free(o->chan->callerid);
 							o->chan->callerid = malloc(strlen(in->callerid) + 1);
-							strncpy(o->chan->callerid, in->callerid, strlen(in->callerid) + 1);
+							if (o->chan->callerid)
+								strncpy(o->chan->callerid, in->callerid, strlen(in->callerid) + 1);
+							else
+								ast_log(LOG_WARNING, "Out of memory\n");
 						}
 						if (in->ani) {
 							if (o->chan->ani)
 								free(o->chan->ani);
 							o->chan->ani = malloc(strlen(in->ani) + 1);
-							strncpy(o->chan->ani, in->ani, strlen(in->ani) + 1);
+							if (o->chan->ani)
+								strncpy(o->chan->ani, in->ani, strlen(in->ani) + 1);
+							else
+								ast_log(LOG_WARNING, "Out of memory\n");
 						}
 						if (ast_call(o->chan, tmpchan, 0)) {
 							ast_log(LOG_NOTICE, "Failed to dial on local channel for call forward to '%s'\n", tmpchan);