webmdashenc: Fix memory leak
Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
This commit is contained in:
		
							parent
							
								
									ba4beaf614
								
							
						
					
					
						commit
						a27c412795
					
				@ -288,33 +288,55 @@ static int parse_filename(char *filename, char **representation_id,
 | 
				
			|||||||
    char *period_pos = NULL;
 | 
					    char *period_pos = NULL;
 | 
				
			||||||
    char *temp_pos = NULL;
 | 
					    char *temp_pos = NULL;
 | 
				
			||||||
    char *filename_str = av_strdup(filename);
 | 
					    char *filename_str = av_strdup(filename);
 | 
				
			||||||
    if (!filename_str) return AVERROR(ENOMEM);
 | 
					    int ret = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (!filename_str) {
 | 
				
			||||||
 | 
					        ret = AVERROR(ENOMEM);
 | 
				
			||||||
 | 
					        goto end;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    temp_pos = av_stristr(filename_str, "_");
 | 
					    temp_pos = av_stristr(filename_str, "_");
 | 
				
			||||||
    while (temp_pos) {
 | 
					    while (temp_pos) {
 | 
				
			||||||
        underscore_pos = temp_pos + 1;
 | 
					        underscore_pos = temp_pos + 1;
 | 
				
			||||||
        temp_pos = av_stristr(temp_pos + 1, "_");
 | 
					        temp_pos = av_stristr(temp_pos + 1, "_");
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if (!underscore_pos) return AVERROR_INVALIDDATA;
 | 
					    if (!underscore_pos) {
 | 
				
			||||||
 | 
					        ret = AVERROR_INVALIDDATA;
 | 
				
			||||||
 | 
					        goto end;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    period_pos = av_stristr(underscore_pos, ".");
 | 
					    period_pos = av_stristr(underscore_pos, ".");
 | 
				
			||||||
    if (!period_pos) return AVERROR_INVALIDDATA;
 | 
					    if (!period_pos) {
 | 
				
			||||||
 | 
					        ret = AVERROR_INVALIDDATA;
 | 
				
			||||||
 | 
					        goto end;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    *(underscore_pos - 1) = 0;
 | 
					    *(underscore_pos - 1) = 0;
 | 
				
			||||||
    if (representation_id) {
 | 
					    if (representation_id) {
 | 
				
			||||||
        *representation_id = av_malloc(period_pos - underscore_pos + 1);
 | 
					        *representation_id = av_malloc(period_pos - underscore_pos + 1);
 | 
				
			||||||
        if (!(*representation_id)) return AVERROR(ENOMEM);
 | 
					        if (!(*representation_id)) {
 | 
				
			||||||
 | 
					            ret = AVERROR(ENOMEM);
 | 
				
			||||||
 | 
					            goto end;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        av_strlcpy(*representation_id, underscore_pos, period_pos - underscore_pos + 1);
 | 
					        av_strlcpy(*representation_id, underscore_pos, period_pos - underscore_pos + 1);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if (initialization_pattern) {
 | 
					    if (initialization_pattern) {
 | 
				
			||||||
        *initialization_pattern = av_asprintf("%s_$RepresentationID$.hdr",
 | 
					        *initialization_pattern = av_asprintf("%s_$RepresentationID$.hdr",
 | 
				
			||||||
                                              filename_str);
 | 
					                                              filename_str);
 | 
				
			||||||
        if (!(*initialization_pattern)) return AVERROR(ENOMEM);
 | 
					        if (!(*initialization_pattern)) {
 | 
				
			||||||
 | 
					            ret = AVERROR(ENOMEM);
 | 
				
			||||||
 | 
					            goto end;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if (media_pattern) {
 | 
					    if (media_pattern) {
 | 
				
			||||||
        *media_pattern = av_asprintf("%s_$RepresentationID$_$Number$.chk",
 | 
					        *media_pattern = av_asprintf("%s_$RepresentationID$_$Number$.chk",
 | 
				
			||||||
                                     filename_str);
 | 
					                                     filename_str);
 | 
				
			||||||
        if (!(*media_pattern)) return AVERROR(ENOMEM);
 | 
					        if (!(*media_pattern)) {
 | 
				
			||||||
 | 
					            ret = AVERROR(ENOMEM);
 | 
				
			||||||
 | 
					            goto end;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    av_free(filename_str);
 | 
					
 | 
				
			||||||
    return 0;
 | 
					end:
 | 
				
			||||||
 | 
					    av_freep(&filename_str);
 | 
				
			||||||
 | 
					    return ret;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user