mirror of https://github.com/redis/redis.git
				
				
				
			Increase string2ld's buffer size (and fix HINCRBYFLOAT)
The string representation of `long double` may take up to ~5000 chars (see PR #3745). Before this fix HINCRBYFLOAT would never overflow (since the string could not exceed 256 chars). Now it can.
This commit is contained in:
		
							parent
							
								
									b270322ff9
								
							
						
					
					
						commit
						b0c8d6c227
					
				| 
						 | 
				
			
			@ -615,6 +615,10 @@ void hincrbyfloatCommand(client *c) {
 | 
			
		|||
    }
 | 
			
		||||
 | 
			
		||||
    value += incr;
 | 
			
		||||
    if (isnan(value) || isinf(value)) {
 | 
			
		||||
        addReplyError(c,"increment would produce NaN or Infinity");
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    char buf[MAX_LONG_DOUBLE_CHARS];
 | 
			
		||||
    int len = ld2string(buf,sizeof(buf),value,1);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -447,7 +447,7 @@ int string2l(const char *s, size_t slen, long *lval) {
 | 
			
		|||
 * a double: no spaces or other characters before or after the string
 | 
			
		||||
 * representing the number are accepted. */
 | 
			
		||||
int string2ld(const char *s, size_t slen, long double *dp) {
 | 
			
		||||
    char buf[256];
 | 
			
		||||
    char buf[MAX_LONG_DOUBLE_CHARS];
 | 
			
		||||
    long double value;
 | 
			
		||||
    char *eptr;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue