From 51cd7d72931006ea83e8c1cb9334fac121fc4a5b Mon Sep 17 00:00:00 2001 From: David Garcia Quintas Date: Mon, 22 Jun 2015 14:26:40 -0700 Subject: [PATCH] Fixed warning while parsing compression enum bytes. --- src/core/surface/call.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/core/surface/call.c b/src/core/surface/call.c index 6e2714db0b0..dd8eaa943e5 100644 --- a/src/core/surface/call.c +++ b/src/core/surface/call.c @@ -1190,9 +1190,14 @@ static gpr_uint32 decode_compression(grpc_mdelem *md) { if (user_data) { clevel = ((grpc_compression_level)(gpr_intptr)user_data) - COMPRESS_OFFSET; } else { - if (!gpr_parse_bytes_to_uint32(grpc_mdstr_as_c_string(md->value), + gpr_uint32 parsed_clevel_bytes; + if (gpr_parse_bytes_to_uint32(grpc_mdstr_as_c_string(md->value), GPR_SLICE_LENGTH(md->value->slice), - &clevel)) { + &parsed_clevel_bytes)) { + /* the following cast is safe, as a gpr_uint32 should be able to hold all + * possible values of the grpc_compression_level enum */ + clevel = (grpc_compression_level) parsed_clevel_bytes; + } else { clevel = GRPC_COMPRESS_LEVEL_NONE; /* could not parse, no compression */ } grpc_mdelem_set_user_data(md, destroy_compression,