diff --git a/src/alg_sec.cpp b/src/alg_sec.cpp index b9de2da7..cb3d6a33 100644 --- a/src/alg_sec.cpp +++ b/src/alg_sec.cpp @@ -385,9 +385,7 @@ static void algsec_params_deinit(ctx_algsec_model &algmdl) { if (algmdl.algsec_params != NULL){ util_parms_free(algmdl.algsec_params); - - free(algmdl.algsec_params); - algmdl.algsec_params = NULL; + util_free_var(algmdl.algsec_params); } } @@ -560,8 +558,7 @@ void algsec_deinit(ctx_cam *cam) } } if (cam->algsec->image_norm != NULL){ - free(cam->algsec->image_norm); - cam->algsec->image_norm = NULL; + util_free_var(cam->algsec->image_norm); } if (waitcnt == 1000){ diff --git a/src/conf.cpp b/src/conf.cpp index 2073dbd4..e8d5de47 100644 --- a/src/conf.cpp +++ b/src/conf.cpp @@ -4327,8 +4327,7 @@ void conf_deinit(struct ctx_motapp *motapp) indx++; } - free(motapp->cam_list); - motapp->cam_list = NULL; + util_free_var(motapp->cam_list); } diff --git a/src/dbse.cpp b/src/dbse.cpp index d620ab39..14e4a48e 100644 --- a/src/dbse.cpp +++ b/src/dbse.cpp @@ -82,10 +82,7 @@ void dbse_global_deinit(struct ctx_motapp *motapp) indx = 0; while (motapp->cam_list[indx] != NULL) { - if (motapp->cam_list[indx]->dbse != NULL) { - free(motapp->cam_list[indx]->dbse); - } - motapp->cam_list[indx]->dbse = NULL; + util_free_var(motapp->cam_list[indx]->dbse); indx++; } diff --git a/src/event.cpp b/src/event.cpp index f1155a19..3cf66570 100644 --- a/src/event.cpp +++ b/src/event.cpp @@ -652,8 +652,7 @@ static void event_movie_newfile(struct ctx_cam *cam, motion_event evnt if (retcd < 0) { MOTION_LOG(ERR, TYPE_EVENTS, NO_ERRNO ,_("Error opening ctx_cam for movie output.")); - free(cam->movie_norm); - cam->movie_norm=NULL; + util_free_var(cam->movie_norm); return; } event(cam, EVENT_FILECREATE, NULL, cam->movie_norm->filename, (void *)FTYPE_MPEG, ts1); @@ -664,8 +663,7 @@ static void event_movie_newfile(struct ctx_cam *cam, motion_event evnt if (retcd < 0) { MOTION_LOG(ERR, TYPE_EVENTS, NO_ERRNO ,_("Error creating motion file [%s]"), cam->movie_motion->filename); - free(cam->movie_motion); - cam->movie_motion = NULL; + util_free_var(cam->movie_motion); return; } } @@ -686,8 +684,7 @@ static void event_movie_timelapse(struct ctx_cam *cam, motion_event evnt if (retcd < 0) { MOTION_LOG(ERR, TYPE_EVENTS, NO_ERRNO ,_("Error creating timelapse file [%s]"), cam->movie_timelapse->filename); - free(cam->movie_timelapse); - cam->movie_timelapse = NULL; + util_free_var(cam->movie_timelapse); return; } event(cam, EVENT_FILECREATE, NULL, cam->movie_timelapse->filename @@ -731,15 +728,13 @@ static void event_movie_closefile(struct ctx_cam *cam, motion_event evnt if (cam->movie_norm) { movie_close(cam->movie_norm); - free(cam->movie_norm); - cam->movie_norm = NULL; + util_free_var(cam->movie_norm); event(cam, EVENT_FILECLOSE, NULL, cam->newfilename, (void *)FTYPE_MPEG, ts1); } if (cam->movie_motion) { movie_close(cam->movie_motion); - free(cam->movie_motion); - cam->movie_motion = NULL; + util_free_var(cam->movie_motion); event(cam, EVENT_FILECLOSE, NULL, cam->motionfilename, (void *)FTYPE_MPEG_MOTION, ts1); } @@ -756,8 +751,7 @@ static void event_movie_timelapseend(struct ctx_cam *cam, motion_event evnt if (cam->movie_timelapse) { movie_close(cam->movie_timelapse); - free(cam->movie_timelapse); - cam->movie_timelapse = NULL; + util_free_var(cam->movie_timelapse); event(cam, EVENT_FILECLOSE, NULL, cam->timelapsefilename, (void *)FTYPE_MPEG_TIMELAPSE, ts1); } } diff --git a/src/exif.cpp b/src/exif.cpp index 8d3cfffb..d14126fb 100644 --- a/src/exif.cpp +++ b/src/exif.cpp @@ -345,7 +345,7 @@ unsigned exif_prepare(unsigned char **exif, const struct ctx_cam *cam, /* assert we didn't underestimate the original buffer size */ assert(marker_len <= buffer_size); - free(description); + util_free_var(description); *exif = marker; return marker_len; diff --git a/src/mmalcam.cpp b/src/mmalcam.cpp index 4ababe6f..9b7ac257 100644 --- a/src/mmalcam.cpp +++ b/src/mmalcam.cpp @@ -382,11 +382,9 @@ void mmalcam_cleanup(struct ctx_mmalcam *mmalcam) destroy_camera_component(mmalcam); } - if (mmalcam->camera_parameters) { - free(mmalcam->camera_parameters); - } + util_free_var(mmalcam->camera_parameters); - free(mmalcam); + util_free_var(mmalcam); } #else (void)mmalcam; diff --git a/src/motion_loop.cpp b/src/motion_loop.cpp index 1356c039..58c68010 100644 --- a/src/motion_loop.cpp +++ b/src/motion_loop.cpp @@ -74,7 +74,7 @@ static void mlp_ring_resize(struct ctx_cam *cam, int new_size) } } - free(cam->imgs.image_ring); + util_free_var(cam->imgs.image_ring); cam->imgs.image_ring = tmp; cam->current_image = NULL; @@ -96,12 +96,10 @@ static void mlp_ring_destroy(struct ctx_cam *cam) } for (i = 0; i < cam->imgs.ring_size; i++) { - free(cam->imgs.image_ring[i].image_norm); - if (cam->imgs.size_high >0 ) { - free(cam->imgs.image_ring[i].image_high); - } + util_free_var(cam->imgs.image_ring[i].image_norm); + util_free_var(cam->imgs.image_ring[i].image_high); } - free(cam->imgs.image_ring); + util_free_var(cam->imgs.image_ring); cam->imgs.image_ring = NULL; cam->current_image = NULL; @@ -580,6 +578,8 @@ static void mlp_init_buffers(struct ctx_cam *cam) cam->imgs.image_secondary =(unsigned char*) mymalloc(3 * cam->imgs.width * cam->imgs.height); if (cam->imgs.size_high > 0) { cam->imgs.image_preview.image_high =(unsigned char*) mymalloc(cam->imgs.size_high); + } else { + cam->imgs.image_preview.image_high = NULL; } memset(cam->imgs.smartmask, 0, cam->imgs.motionsize); @@ -743,74 +743,25 @@ void mlp_cleanup(struct ctx_cam *cam) mlp_cam_close(cam); } - free(cam->imgs.image_motion.image_norm); - cam->imgs.image_motion.image_norm = NULL; - - free(cam->imgs.ref); - cam->imgs.ref = NULL; - - free(cam->imgs.ref_dyn); - cam->imgs.ref_dyn = NULL; - - free(cam->imgs.image_virgin); - cam->imgs.image_virgin = NULL; - - free(cam->imgs.image_vprvcy); - cam->imgs.image_vprvcy = NULL; - - free(cam->imgs.labels); - cam->imgs.labels = NULL; - - free(cam->imgs.labelsize); - cam->imgs.labelsize = NULL; - - free(cam->imgs.smartmask); - cam->imgs.smartmask = NULL; - - free(cam->imgs.smartmask_final); - cam->imgs.smartmask_final = NULL; - - free(cam->imgs.smartmask_buffer); - cam->imgs.smartmask_buffer = NULL; - - if (cam->imgs.mask) { - free(cam->imgs.mask); - } - cam->imgs.mask = NULL; - - if (cam->imgs.mask_privacy) { - free(cam->imgs.mask_privacy); - } - cam->imgs.mask_privacy = NULL; - - if (cam->imgs.mask_privacy_uv) { - free(cam->imgs.mask_privacy_uv); - } - cam->imgs.mask_privacy_uv = NULL; - - if (cam->imgs.mask_privacy_high) { - free(cam->imgs.mask_privacy_high); - } - cam->imgs.mask_privacy_high = NULL; - - if (cam->imgs.mask_privacy_high_uv) { - free(cam->imgs.mask_privacy_high_uv); - } - cam->imgs.mask_privacy_high_uv = NULL; - - free(cam->imgs.common_buffer); - cam->imgs.common_buffer = NULL; - - free(cam->imgs.image_secondary); - cam->imgs.image_secondary = NULL; - - free(cam->imgs.image_preview.image_norm); - cam->imgs.image_preview.image_norm = NULL; - - if (cam->imgs.size_high > 0) { - free(cam->imgs.image_preview.image_high); - cam->imgs.image_preview.image_high = NULL; - } + util_free_var(cam->imgs.image_motion.image_norm); + util_free_var(cam->imgs.ref); + util_free_var(cam->imgs.ref_dyn); + util_free_var(cam->imgs.image_virgin); + util_free_var(cam->imgs.image_vprvcy); + util_free_var(cam->imgs.labels); + util_free_var(cam->imgs.labelsize); + util_free_var(cam->imgs.smartmask); + util_free_var(cam->imgs.smartmask_final); + util_free_var(cam->imgs.smartmask_buffer); + util_free_var(cam->imgs.mask); + util_free_var(cam->imgs.mask_privacy); + util_free_var(cam->imgs.mask_privacy_uv); + util_free_var(cam->imgs.mask_privacy_high); + util_free_var(cam->imgs.mask_privacy_high_uv); + util_free_var(cam->imgs.common_buffer); + util_free_var(cam->imgs.image_secondary); + util_free_var(cam->imgs.image_preview.image_norm); + util_free_var(cam->imgs.image_preview.image_high); mlp_ring_destroy(cam); /* Cleanup the precapture ring buffer */ diff --git a/src/motionplus.cpp b/src/motionplus.cpp index 43150e75..41d56b81 100644 --- a/src/motionplus.cpp +++ b/src/motionplus.cpp @@ -681,11 +681,7 @@ static void motion_cam_delete(struct ctx_motapp *motapp) return; } - /* Free database context */ - if (motapp->cam_list[motapp->cam_delete]->dbse != NULL) { - free(motapp->cam_list[motapp->cam_delete]->dbse); - } - motapp->cam_list[motapp->cam_delete]->dbse = NULL; + util_free_var(motapp->cam_list[motapp->cam_delete]->dbse); /* Delete the config context */ delete motapp->cam_list[motapp->cam_delete]->conf; @@ -708,7 +704,7 @@ static void motion_cam_delete(struct ctx_motapp *motapp) /* Swap out the old list with the new */ pthread_mutex_lock(&motapp->mutex_camlst); - free(motapp->cam_list); + util_free_var(motapp->cam_list); motapp->cam_list = tmp; pthread_mutex_unlock(&motapp->mutex_camlst); diff --git a/src/movie.cpp b/src/movie.cpp index baadc6d0..822c9fe9 100644 --- a/src/movie.cpp +++ b/src/movie.cpp @@ -45,8 +45,7 @@ static void movie_free_nal(struct ctx_movie *movie) { if (movie->nal_info) { - free(movie->nal_info); - movie->nal_info = NULL; + util_free_var(movie->nal_info); movie->nal_info_len = 0; } } @@ -146,7 +145,7 @@ static int movie_get_oformat(struct ctx_movie *movie) MOTION_LOG(ERR, TYPE_ENCODER, NO_ERRNO ,_("Error setting base file name")); movie_free_context(movie); - free(codec_name); + util_free_var(codec_name); return -1; } @@ -161,10 +160,10 @@ static int movie_get_oformat(struct ctx_movie *movie) MOTION_LOG(ERR, TYPE_ENCODER, NO_ERRNO ,_("Error setting timelapse append for codec %s"), codec_name); movie_free_context(movie); - free(codec_name); + util_free_var(codec_name); return -1; } - free(codec_name); + util_free_var(codec_name); return 0; } @@ -221,7 +220,7 @@ static int movie_get_oformat(struct ctx_movie *movie) MOTION_LOG(ERR, TYPE_ENCODER, NO_ERRNO ,_("Error setting file name")); movie_free_context(movie); - free(codec_name); + util_free_var(codec_name); return -1; } @@ -229,18 +228,18 @@ static int movie_get_oformat(struct ctx_movie *movie) MOTION_LOG(ERR, TYPE_ENCODER, NO_ERRNO ,_("codec option value %s is not supported"), codec_name); movie_free_context(movie); - free(codec_name); + util_free_var(codec_name); return -1; } if (movie->oc->oformat->video_codec == MY_CODEC_ID_NONE) { MOTION_LOG(ERR, TYPE_ENCODER, NO_ERRNO, _("Could not get the codec")); movie_free_context(movie); - free(codec_name); + util_free_var(codec_name); return -1; } - free(codec_name); + util_free_var(codec_name); return 0; } @@ -337,7 +336,7 @@ static int movie_encode_video(struct ctx_movie *movie) movie->pkt.pts = movie->picture->pts; movie->pkt.dts = movie->pkt.pts; - free(video_outbuf); + util_free_var(video_outbuf); /* This kills compiler warnings. Nal setting is only for recent movie versions*/ if (movie->preferred_codec == USER_CODEC_V4L2M2M) { diff --git a/src/util.cpp b/src/util.cpp index 2d00c25b..eb1f776c 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -1221,3 +1221,13 @@ void util_exec_command(struct ctx_cam *cam, const char *command, char *filename, MOTION_LOG(DBG, TYPE_EVENTS, NO_ERRNO ,_("Executing external command '%s'"), stamp); } + +/* Free a pointer and set to null */ +void util_free_var(void *parm) +{ + if (parm != NULL) { + free(parm); + } + parm = NULL; +} + diff --git a/src/util.hpp b/src/util.hpp index 736805d1..2c24f42d 100644 --- a/src/util.hpp +++ b/src/util.hpp @@ -134,6 +134,6 @@ void util_parms_add_default(ctx_params *params, std::string parm_nm, std::string parm_vl); void util_parms_free(struct ctx_params *params); void util_parms_update(struct ctx_params *params, std::string &confline); - + void util_free_var(void *parm); #endif diff --git a/src/video_v4l2.cpp b/src/video_v4l2.cpp index f2e04369..1c2c8b42 100644 --- a/src/video_v4l2.cpp +++ b/src/video_v4l2.cpp @@ -554,7 +554,7 @@ static int v4l2_set_palette(ctx_v4l2cam *v4l2cam) if ((indx_palette >= 0) && (indx_palette <= V4L2_PALETTE_COUNT_MAX)) { retcd = v4l2_set_pixfmt(v4l2cam, palette_array[indx_palette].v4l2id); if (retcd >= 0) { - free(palette_array); + util_free_var(palette_array); return 0; } MOTION_LOG(NTC, TYPE_VIDEO, NO_ERRNO @@ -598,7 +598,7 @@ static int v4l2_set_palette(ctx_v4l2cam *v4l2cam) MOTION_LOG(NTC, TYPE_VIDEO, NO_ERRNO ,_("Selected palette %s") ,palette_array[indx_palette].fourcc); - free(palette_array); + util_free_var(palette_array); return 0; } MOTION_LOG(ERR, TYPE_VIDEO, NO_ERRNO @@ -609,7 +609,7 @@ static int v4l2_set_palette(ctx_v4l2cam *v4l2cam) MOTION_LOG(ERR, TYPE_VIDEO, NO_ERRNO ,_("Unable to find a compatible palette format.")); - free(palette_array); + util_free_var(palette_array); return -1; @@ -668,8 +668,7 @@ static int v4l2_set_mmap(ctx_v4l2cam *v4l2cam) MOTION_LOG(ERR, TYPE_VIDEO, SHOW_ERRNO ,_("Error querying buffer %i\nVIDIOC_QUERYBUF: ") ,buffer_index); - free(v4l2cam->buffers); - v4l2cam->buffers = NULL; + util_free_var(v4l2cam->buffers); return -1; } @@ -680,8 +679,7 @@ static int v4l2_set_mmap(ctx_v4l2cam *v4l2cam) if (v4l2cam->buffers[buffer_index].ptr == MAP_FAILED) { MOTION_LOG(ERR, TYPE_VIDEO, SHOW_ERRNO ,_("Error mapping buffer %i mmap"), buffer_index); - free(v4l2cam->buffers); - v4l2cam->buffers = NULL; + util_free_var(v4l2cam->buffers); return -1; } @@ -1085,7 +1083,7 @@ static void v4l2_log_formats(ctx_v4l2cam *v4l2cam) dev_format.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; } - free(palette_array); + util_free_var(palette_array); return; } @@ -1147,28 +1145,23 @@ void v4l2_cleanup(ctx_cam *cam) for (indx = 0; indx < (int)cam->v4l2cam->req.count; indx++){ munmap(cam->v4l2cam->buffers[indx].ptr, cam->v4l2cam->buffers[indx].size); } - free(cam->v4l2cam->buffers); - cam->v4l2cam->buffers = NULL; + util_free_var(cam->v4l2cam->buffers); } if (cam->v4l2cam->devctrl_count != 0) { for (indx = 0; indx < cam->v4l2cam->devctrl_count; indx++){ - free(cam->v4l2cam->devctrl_array[indx].ctrl_iddesc); - free(cam->v4l2cam->devctrl_array[indx].ctrl_name); - cam->v4l2cam->devctrl_array[indx].ctrl_iddesc = NULL; - cam->v4l2cam->devctrl_array[indx].ctrl_name = NULL; + util_free_var(cam->v4l2cam->devctrl_array[indx].ctrl_iddesc); + util_free_var(cam->v4l2cam->devctrl_array[indx].ctrl_name); } - free(cam->v4l2cam->devctrl_array); - cam->v4l2cam->devctrl_array = NULL; + util_free_var(cam->v4l2cam->devctrl_array); } cam->v4l2cam->devctrl_count=0; util_parms_free(cam->v4l2cam->params); - free(cam->v4l2cam->params); + util_free_var(cam->v4l2cam->params); - free(cam->v4l2cam); - cam->v4l2cam = NULL; + util_free_var(cam->v4l2cam); cam->running_cam = FALSE; #else (void)cam; diff --git a/src/webu.cpp b/src/webu.cpp index 2726a1e4..059813d4 100644 --- a/src/webu.cpp +++ b/src/webu.cpp @@ -96,32 +96,22 @@ static void webu_context_init(struct ctx_motapp *motapp, struct webui_ctx *webui return; } -/* Free a char variable and set to null */ -static void webu_free_var(char *parm) -{ - if (parm != NULL) { - free(parm); - } - parm = NULL; -} - /* Free the variables in the webui context */ static void webu_context_free(struct webui_ctx *webui) { int indx; - webu_free_var(webui->auth_user); - webu_free_var(webui->auth_pass); - webu_free_var(webui->auth_opaque); - webu_free_var(webui->auth_realm); - webu_free_var(webui->resp_image); + util_free_var(webui->auth_user); + util_free_var(webui->auth_pass); + util_free_var(webui->auth_opaque); + util_free_var(webui->auth_realm); + util_free_var(webui->resp_image); for (indx = 0; indxpost_sz; indx++) { - webu_free_var(webui->post_info[indx].key_nm); - webu_free_var(webui->post_info[indx].key_val); + util_free_var(webui->post_info[indx].key_nm); + util_free_var(webui->post_info[indx].key_val); } - free(webui->post_info); - webui->post_info = NULL; + util_free_var(webui->post_info); delete webui; @@ -365,14 +355,10 @@ static mhdrslt webu_mhd_digest(struct webui_ctx *webui) if (mystrne(user, webui->auth_user)) { MOTION_LOG(ALR, TYPE_STREAM, NO_ERRNO ,_("Failed authentication from %s"), webui->clientip.c_str()); - if (user != NULL) { - free(user); - } + util_free_var(user); return webu_mhd_digest_fail(webui, MHD_NO); } - if (user != NULL) { - free(user); - } + util_free_var(user); /* Check the password as well*/ retcd = MHD_digest_auth_check(webui->connection, webui->auth_realm @@ -432,21 +418,21 @@ static mhdrslt webu_mhd_basic(struct webui_ctx *webui) user = MHD_basic_auth_get_username_password (webui->connection, &pass); if ((user == NULL) || (pass == NULL)) { - webu_free_var(user); - webu_free_var(pass); + util_free_var(user); + util_free_var(pass); return webu_mhd_basic_fail(webui); } if ((mystrne(user, webui->auth_user)) || (mystrne(pass, webui->auth_pass))) { MOTION_LOG(ALR, TYPE_STREAM, NO_ERRNO ,_("Failed authentication from %s"),webui->clientip.c_str()); - webu_free_var(user); - webu_free_var(pass); + util_free_var(user); + util_free_var(pass); return webu_mhd_basic_fail(webui); } - webu_free_var(user); - webu_free_var(pass); + util_free_var(user); + util_free_var(pass); webui->authenticated = true; @@ -460,8 +446,8 @@ static void webu_mhd_auth_parse(struct webui_ctx *webui) int auth_len; char *col_pos; - webu_free_var(webui->auth_user); - webu_free_var(webui->auth_pass); + util_free_var(webui->auth_user); + util_free_var(webui->auth_pass); auth_len = webui->motapp->cam_list[0]->conf->webcontrol_authentication.length(); col_pos =(char*) strstr(webui->motapp->cam_list[0]->conf->webcontrol_authentication.c_str() ,":"); diff --git a/src/webu_stream.cpp b/src/webu_stream.cpp index 99592f4e..f00b1b0f 100644 --- a/src/webu_stream.cpp +++ b/src/webu_stream.cpp @@ -32,8 +32,7 @@ static void webu_stream_mjpeg_checkbuffers(struct webui_ctx *webui) { if (webui->resp_size < (size_t)webui->cam->imgs.size_norm) { if (webui->resp_image != NULL) { - free(webui->resp_image); - webui->resp_image = NULL; + util_free_var(webui->resp_image); } webui->resp_image =(char*) mymalloc(webui->cam->imgs.size_norm); memset(webui->resp_image,'\0',webui->cam->imgs.size_norm); @@ -474,35 +473,12 @@ void webu_stream_deinit(struct ctx_cam *cam) pthread_mutex_destroy(&cam->stream.mutex); - if (cam->imgs.image_substream != NULL) { - free(cam->imgs.image_substream); - cam->imgs.image_substream = NULL; - } - - if (cam->stream.norm.jpeg_data != NULL) { - free(cam->stream.norm.jpeg_data); - cam->stream.norm.jpeg_data = NULL; - } - - if (cam->stream.sub.jpeg_data != NULL) { - free(cam->stream.sub.jpeg_data); - cam->stream.sub.jpeg_data = NULL; - } - - if (cam->stream.motion.jpeg_data != NULL) { - free(cam->stream.motion.jpeg_data); - cam->stream.motion.jpeg_data = NULL; - } - - if (cam->stream.source.jpeg_data != NULL) { - free(cam->stream.source.jpeg_data); - cam->stream.source.jpeg_data = NULL; - } - - if (cam->stream.secondary.jpeg_data != NULL) { - free(cam->stream.secondary.jpeg_data); - cam->stream.secondary.jpeg_data = NULL; - } + util_free_var(cam->imgs.image_substream); + util_free_var(cam->stream.norm.jpeg_data); + util_free_var(cam->stream.sub.jpeg_data); + util_free_var(cam->stream.motion.jpeg_data); + util_free_var(cam->stream.source.jpeg_data); + util_free_var(cam->stream.secondary.jpeg_data); } @@ -627,10 +603,7 @@ static void webu_stream_getimg_secondary(struct ctx_cam *cam) cam->stream.secondary.jpeg_size = cam->imgs.size_secondary; pthread_mutex_unlock(&cam->algsec->mutex); } else { - if (cam->stream.secondary.jpeg_data != NULL) { - free(cam->stream.secondary.jpeg_data); - cam->stream.secondary.jpeg_data = NULL; - } + util_free_var(cam->stream.secondary.jpeg_data); } }