avutil/avstring: Fix bug and undefined behavior in av_strncasecmp()
The function in case of n=0 would read more bytes than 0. The end pointer could be beyond the allocated space, which is undefined. Reviewed-by: Paul B Mahol <onemda@gmail.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc> (cherry picked from commit 6f0e9a863466bfcbd75ee15d4d8a6aad2a5126a4) Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
		
							parent
							
								
									05a90821d0
								
							
						
					
					
						commit
						d8bdc95457
					
				@ -222,12 +222,13 @@ int av_strcasecmp(const char *a, const char *b)
 | 
			
		||||
 | 
			
		||||
int av_strncasecmp(const char *a, const char *b, size_t n)
 | 
			
		||||
{
 | 
			
		||||
    const char *end = a + n;
 | 
			
		||||
    uint8_t c1, c2;
 | 
			
		||||
    if (n <= 0)
 | 
			
		||||
        return 0;
 | 
			
		||||
    do {
 | 
			
		||||
        c1 = av_tolower(*a++);
 | 
			
		||||
        c2 = av_tolower(*b++);
 | 
			
		||||
    } while (a < end && c1 && c1 == c2);
 | 
			
		||||
    } while (--n && c1 && c1 == c2);
 | 
			
		||||
    return c1 - c2;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user