--- src/flac/decode.c.orig	2010-07-14 11:00:36.000000000 +0100
+++ src/flac/decode.c	2010-07-14 11:32:13.000000000 +0100
@@ -1245,10 +1245,19 @@
 			decoder_session->total_samples -= (metadata->data.stream_info.total_samples - until);
 		}
 
-		if(decoder_session->bps < 4 || decoder_session->bps > 24) {
-			flac__utils_printf(stderr, 1, "%s: ERROR: bits per sample is %u, must be 4-24\n", decoder_session->inbasefilename, decoder_session->bps);
-			decoder_session->abort_flag = true;
-			return;
+		if(decoder_session->analysis_mode || decoder_session->test_only || decoder_session->is_wave_out || decoder_session->is_aiff_out) {
+			if(decoder_session->bps < 4 || decoder_session->bps > 24) {
+				flac__utils_printf(stderr, 1, "%s: ERROR: bits per sample is %u, must be 4-24\n", decoder_session->inbasefilename, decoder_session->bps);
+				decoder_session->abort_flag = true;
+				return;
+			}
+		}
+		else {
+			if ((decoder_session->bps % 8) != 0) {
+				flac__utils_printf(stderr, 1, "%s: ERROR: bits per sample is %u, must be 8/16/24 for raw format output\n", decoder_session->inbasefilename, decoder_session->bps);
+				decoder_session->abort_flag = true;
+				return;
+			}
 		}
 	}
 	else if(metadata->type == FLAC__METADATA_TYPE_CUESHEET) {
