Merge 1236151b445080796e6b3153525d9535b8d7d868 on remote branch

Change-Id: Iff28b42199fb07cc9e86de01dd8552b04a23626e
diff --git a/libFLAC/bitreader.c b/libFLAC/bitreader.c
index ab62d41..8969714 100644
--- a/libFLAC/bitreader.c
+++ b/libFLAC/bitreader.c
@@ -859,7 +859,7 @@
 			cwords = br->consumed_words;
 			words = br->words;
 			ucbits = FLAC__BITS_PER_WORD - br->consumed_bits;
-			b = br->buffer[cwords] << br->consumed_bits;
+			b = cwords < br->capacity ? br->buffer[cwords] << br->consumed_bits : 0;
 		} while(cwords >= words && val < end);
 	}
 
diff --git a/libFLAC/stream_decoder.c b/libFLAC/stream_decoder.c
index 071398a..7db34cf 100644
--- a/libFLAC/stream_decoder.c
+++ b/libFLAC/stream_decoder.c
@@ -1761,6 +1761,9 @@
 					}
 					memset (obj->comments[i].entry, 0, obj->comments[i].length) ;
 					if (!FLAC__bitreader_read_byte_block_aligned_no_crc(decoder->private_->input, obj->comments[i].entry, obj->comments[i].length)) {
+						/* Current i-th entry is bad, so we delete it. */
+						free (obj->comments[i].entry) ;
+						obj->comments[i].entry = NULL ;
 						obj->num_comments = i;
 						goto skip;
 					}