]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-11226: [freeswitch-core,mod_conference] Missing font files can lead to crash in...
authorAnthony Minessale <anthm@freeswitch.org>
Mon, 9 Jul 2018 20:04:28 +0000 (20:04 +0000)
committerMuteesa Fred <muteesafred@hotmail.com>
Tue, 24 Jul 2018 07:21:56 +0000 (07:21 +0000)
src/mod/applications/mod_conference/conference_video.c
src/switch_core_video.c

index 69cf103bd442f18d49585fd42bb55683778d3a76..44ad6d3d54045835ea57f4a74fb6a60365877add 100644 (file)
@@ -1199,16 +1199,20 @@ void conference_member_set_logo(conference_member_t *member, const char *path)
                                        if (y < 0) y = 0;
                                }
 
-                               img = switch_img_write_text_img(member->video_logo->d_w, member->video_logo->d_h, SWITCH_FALSE, var);
-                               switch_img_fit(&img, member->video_logo->d_w, member->video_logo->d_h, SWITCH_FIT_NECESSARY);
-                               switch_img_attenuate(member->video_logo);
+                               if ((img = switch_img_write_text_img(member->video_logo->d_w, member->video_logo->d_h, SWITCH_FALSE, var))) {
+                                       switch_img_fit(&img, member->video_logo->d_w, member->video_logo->d_h, SWITCH_FIT_NECESSARY);
+                                       switch_img_attenuate(member->video_logo);
 
-                               if (center) {
-                                       x = center_off + ((member->video_logo->d_w - center_off - img->d_w) / 2);
-                               }
 
-                               switch_img_patch(member->video_logo, img, x, y);
-                               switch_img_free(&img);
+                                       if (center) {
+                                               x = center_off + ((member->video_logo->d_w - center_off - img->d_w) / 2);
+                                       }
+
+                                       switch_img_patch(member->video_logo, img, x, y);
+                                       switch_img_free(&img);
+                               } else {
+                                       switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Failed to write text on image!\n");
+                               }
                        }
 
                        if (params && (var = switch_event_get_header(params, "alt_text"))) {
@@ -1236,17 +1240,21 @@ void conference_member_set_logo(conference_member_t *member, const char *path)
                                        y = atoi(tmp);
                                        if (y < 0) y = 0;
                                }
+                               
+                               if ((img = switch_img_write_text_img(member->video_logo->d_w, member->video_logo->d_h, SWITCH_FALSE, var))) {
+                                       switch_img_fit(&img, member->video_logo->d_w, member->video_logo->d_h, SWITCH_FIT_NECESSARY);
+                                       switch_img_attenuate(member->video_logo);
+                                       
+                                       if (center) {
+                                               x = center_off + ((member->video_logo->d_w - center_off - img->d_w) / 2);
+                                       }
 
-                               img = switch_img_write_text_img(member->video_logo->d_w, member->video_logo->d_h, SWITCH_FALSE, var);
-                               switch_img_fit(&img, member->video_logo->d_w, member->video_logo->d_h, SWITCH_FIT_NECESSARY);
-                               switch_img_attenuate(member->video_logo);
-
-                               if (center) {
-                                       x = center_off + ((member->video_logo->d_w - center_off - img->d_w) / 2);
+                                       switch_img_patch(member->video_logo, img, x, y);
+                                       switch_img_free(&img);
+                               } else {
+                                       switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Failed to write text on image!\n");
                                }
-
-                               switch_img_patch(member->video_logo, img, x, y);
-                               switch_img_free(&img);
+                                                
                        }
                        
                }
index 66cbc6279f53e3a2f241799c5d641d01134f962d..96a39a107f2e92be74357dc790a7d0e2c661da23 100644 (file)
@@ -2196,6 +2196,11 @@ SWITCH_DECLARE(switch_image_t *) switch_img_write_text_img(int w, int h, switch_
        } else {
                width = pre_width;
        }
+
+       if (width == 0 || height == 0) {
+               txtimg = NULL;
+               goto done;
+       }
        
        //if (bg) {
        //      txtimg = switch_img_alloc(NULL, SWITCH_IMG_FMT_I420, width, height, 1);
@@ -2224,6 +2229,9 @@ SWITCH_DECLARE(switch_image_t *) switch_img_write_text_img(int w, int h, switch_
                                                                txtimg,
                                                                x, y,
                                                                txt, NULL, fg, bg, 0, 0);
+
+ done:
+       
        switch_img_txt_handle_destroy(&txthandle);
 
        switch_safe_free(duptxt);