Fix a null pointer dereference in DoVoiceChange(synthesize.c). [Coverity]

This commit is contained in:
Reece H. Dunn
2016-01-22 20:37:01 +00:00
parent e74a0e4f53
commit 69355ed568
2 changed files with 6 additions and 4 deletions
+5 -3
View File
@@ -20,6 +20,7 @@
#include "config.h"
#include <ctype.h>
#include <errno.h>
#include <math.h>
#include <stdint.h>
#include <stdio.h>
@@ -1061,16 +1062,17 @@ void DoSonicSpeed(int value)
}
#endif
void DoVoiceChange(voice_t *v)
espeak_ng_STATUS DoVoiceChange(voice_t *v)
{
// allocate memory for a copy of the voice data, and free it in wavegenfill()
voice_t *v2;
v2 = (voice_t *)malloc(sizeof(voice_t));
if ((v2 = (voice_t *)malloc(sizeof(voice_t))) == NULL)
return ENOMEM;
memcpy(v2, v, sizeof(voice_t));
wcmdq[wcmdq_tail][0] = WCMD_VOICE;
wcmdq[wcmdq_tail][2] = (intptr_t)v2;
WcmdqInc();
return ENS_OK;
}
void DoEmbedded(int *embix, int sourceix)
+1 -1
View File
@@ -82,7 +82,7 @@ const char *SelectVoice(espeak_VOICE *voice_select, int *found);
espeak_VOICE *SelectVoiceByName(espeak_VOICE **voices, const char *name);
voice_t *LoadVoice(const char *voice_name, int control);
voice_t *LoadVoiceVariant(const char *voice_name, int variant);
void DoVoiceChange(voice_t *v);
espeak_ng_STATUS DoVoiceChange(voice_t *v);
void WVoiceChanged(voice_t *wvoice);
void WavegenSetVoice(voice_t *v);
void ReadTonePoints(char *string, int *tone_pts);