mirror of
				https://github.com/python-pillow/Pillow.git
				synced 2025-11-04 01:47:47 +03:00 
			
		
		
		
	Initialize buffer with 0, fixes valgrind undefined behavior issues
This commit is contained in:
		
							parent
							
								
									43aa6ade6f
								
							
						
					
					
						commit
						441e6426ae
					
				| 
						 | 
					@ -199,7 +199,7 @@ _setimage(ImagingDecoderObject *decoder, PyObject *args) {
 | 
				
			||||||
            state->bytes = (state->bits * state->xsize + 7) / 8;
 | 
					            state->bytes = (state->bits * state->xsize + 7) / 8;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        /* malloc check ok, overflow checked above */
 | 
					        /* malloc check ok, overflow checked above */
 | 
				
			||||||
        state->buffer = (UINT8 *)malloc(state->bytes);
 | 
					        state->buffer = (UINT8 *)calloc(1, state->bytes);
 | 
				
			||||||
        if (!state->buffer) {
 | 
					        if (!state->buffer) {
 | 
				
			||||||
            return ImagingError_MemoryError();
 | 
					            return ImagingError_MemoryError();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -264,7 +264,7 @@ _setimage(ImagingEncoderObject *encoder, PyObject *args) {
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        state->bytes = (state->bits * state->xsize + 7) / 8;
 | 
					        state->bytes = (state->bits * state->xsize + 7) / 8;
 | 
				
			||||||
        /* malloc check ok, overflow checked above */
 | 
					        /* malloc check ok, overflow checked above */
 | 
				
			||||||
        state->buffer = (UINT8 *)malloc(state->bytes);
 | 
					        state->buffer = (UINT8 *)calloc(1, state->bytes);
 | 
				
			||||||
        if (!state->buffer) {
 | 
					        if (!state->buffer) {
 | 
				
			||||||
            return ImagingError_MemoryError();
 | 
					            return ImagingError_MemoryError();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -861,6 +861,10 @@ j2k_decode_entry(Imaging im, ImagingCodecState state) {
 | 
				
			||||||
                state->state = J2K_STATE_FAILED;
 | 
					                state->state = J2K_STATE_FAILED;
 | 
				
			||||||
                goto quick_exit;
 | 
					                goto quick_exit;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					            /* Undefined behavior, sometimes decode_tile_data doesn't
 | 
				
			||||||
 | 
					               fill the buffer and we do things with it later, leading
 | 
				
			||||||
 | 
					               to valgrind errors. */
 | 
				
			||||||
 | 
					            memset(new, 0, tile_info.data_size);
 | 
				
			||||||
            state->buffer = new;
 | 
					            state->buffer = new;
 | 
				
			||||||
            buffer_size = tile_info.data_size;
 | 
					            buffer_size = tile_info.data_size;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user