diff --git a/apps/app_voicemail.c b/apps/app_voicemail.c
index 5cb03c86aeaf502ed620afaa065d8ce31901064c..c6d126bcfa0ef4b82f5c023494791bc87eaf41df 100644
--- a/apps/app_voicemail.c
+++ b/apps/app_voicemail.c
@@ -4219,6 +4219,10 @@ static int forward_message(struct ast_channel *chan, char *context, struct vm_st
 			}	
 		}
 	}
+
+	/* If anything failed above, we still have this list to free */
+	while ((vmtmp = AST_LIST_REMOVE_HEAD(&extensions, list)))
+		free_user(vmtmp);
 	return res ? res : cmd;
 }