1
0
mirror of https://github.com/Tha14/toxic.git synced 2024-06-29 14:37:46 +02:00

Do proper error handling for a few malloc calls

This commit is contained in:
jfreegman 2021-12-12 11:30:27 -05:00
parent 3eac65036c
commit bf1e1b73fc
No known key found for this signature in database
GPG Key ID: 3627F3144076AE63
3 changed files with 26 additions and 3 deletions

View File

@ -489,16 +489,27 @@ void terminate_notify(void)
} }
#ifdef SOUND_NOTIFY #ifdef SOUND_NOTIFY
int set_sound(Notification sound, const char *value)
/*
* Sets notification sound designated by `sound` to file path `value`.
*
* Return true if the sound is successfully set.
*/
bool set_sound(Notification sound, const char *value)
{ {
if (sound == silent) { if (sound == silent) {
return 0; return false;
} }
free(Control.sounds[sound]); free(Control.sounds[sound]);
size_t len = strlen(value) + 1; size_t len = strlen(value) + 1;
Control.sounds[sound] = calloc(len, 1); Control.sounds[sound] = calloc(len, 1);
if (Control.sounds[sound] == NULL) {
return false;
}
memcpy(Control.sounds[sound], value, len); memcpy(Control.sounds[sound], value, len);
struct stat buf; struct stat buf;

View File

@ -77,7 +77,7 @@ int box_silent_notify(ToxWindow *self, uint64_t flags, int *id_indicator, const
int box_silent_notify2(ToxWindow *self, uint64_t flags, int id, const char *format, ...); int box_silent_notify2(ToxWindow *self, uint64_t flags, int id, const char *format, ...);
#ifdef SOUND_NOTIFY #ifdef SOUND_NOTIFY
int set_sound(Notification sound, const char *value); bool set_sound(Notification sound, const char *value);
#endif /* SOUND_NOTIFY */ #endif /* SOUND_NOTIFY */
#endif /* NOTIFY_H */ #endif /* NOTIFY_H */

View File

@ -209,12 +209,24 @@ VideoDeviceError init_video_devices(void)
/* Query V4L for capture capabilities */ /* Query V4L for capture capabilities */
if (-1 != ioctl(fd, VIDIOC_QUERYCAP, &cap)) { if (-1 != ioctl(fd, VIDIOC_QUERYCAP, &cap)) {
video_input_name = (char *)malloc(strlen((const char *)cap.card) + strlen(device_address) + 4); video_input_name = (char *)malloc(strlen((const char *)cap.card) + strlen(device_address) + 4);
if (video_input_name == NULL) {
close(fd);
return vde_InternalError;
}
strcpy(video_input_name, (char *)cap.card); strcpy(video_input_name, (char *)cap.card);
strcat(video_input_name, " ("); strcat(video_input_name, " (");
strcat(video_input_name, (char *)device_address); strcat(video_input_name, (char *)device_address);
strcat(video_input_name, ")"); strcat(video_input_name, ")");
} else { } else {
video_input_name = (char *)malloc(strlen(device_address) + 3); video_input_name = (char *)malloc(strlen(device_address) + 3);
if (video_input_name == NULL) {
close(fd);
return vde_InternalError;
}
strcpy(video_input_name, "("); strcpy(video_input_name, "(");
strcat(video_input_name, device_address); strcat(video_input_name, device_address);
strcat(video_input_name, ")"); strcat(video_input_name, ")");