You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@avro.apache.org by dc...@apache.org on 2012/09/13 23:24:26 UTC
svn commit: r1384543 - in /avro/trunk: CHANGES.txt lang/c/src/value-read.c
Author: dcreager
Date: Thu Sep 13 21:24:25 2012
New Revision: 1384543
URL: http://svn.apache.org/viewvc?rev=1384543&view=rev
Log:
AVRO-1159. C: Check union discriminant in avro_value_read.
Contributed by Lucas Martin-King.
Modified:
avro/trunk/CHANGES.txt
avro/trunk/lang/c/src/value-read.c
Modified: avro/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/avro/trunk/CHANGES.txt?rev=1384543&r1=1384542&r2=1384543&view=diff
==============================================================================
--- avro/trunk/CHANGES.txt (original)
+++ avro/trunk/CHANGES.txt Thu Sep 13 21:24:25 2012
@@ -64,6 +64,9 @@ Avro 1.7.2 (unreleased)
AVRO-1158. C: Fixed infinite loop in deflate decompression codec.
(Lucas Martin-King via dcreager)
+ AVRO-1159. C: Check union discriminants in avro_value_read.
+ (Lucas Martin-King via dcreager)
+
Avro 1.7.1 (16 July 2012)
NEW FEATURES
Modified: avro/trunk/lang/c/src/value-read.c
URL: http://svn.apache.org/viewvc/avro/trunk/lang/c/src/value-read.c?rev=1384543&r1=1384542&r2=1384543&view=diff
==============================================================================
--- avro/trunk/lang/c/src/value-read.c (original)
+++ avro/trunk/lang/c/src/value-read.c Thu Sep 13 21:24:25 2012
@@ -165,6 +165,13 @@ read_union_value(avro_reader_t reader, a
check_prefix(rval, avro_binary_encoding.
read_long(reader, &discriminant),
"Cannot read union discriminant: ");
+
+ if (discriminant < 0) {
+ avro_set_error("Invalid union discriminant value: (%d)",
+ discriminant);
+ return 1;
+ }
+
check(rval, avro_value_set_branch(dest, discriminant, &branch));
check(rval, read_value(reader, &branch));
return 0;