protoc-gen-lua icon indicating copy to clipboard operation
protoc-gen-lua copied to clipboard

double may cause crash on some phone

Open kueiwoodwolf opened this issue 11 years ago • 0 comments

When parse message with a double field, it may cause crash, because incorrect data alignment will send signal sigbus in these machines.So modify lua_pb.c to use follow functions to parse float and double: static float unpack_float(const uint8_t* buffer) {

ifdef IS_LITTLE_ENDIAN

float fvalue;
memcpy(&fvalue, buffer, sizeof(float));
return fvalue;

else

uint32_t uvalue;
memcpy(&uvalue, buffer, sizeof(uint32_t));
uvalue = le32toh(uvalue);
return *(*float)&uvalue;

endif

}

static double unpack_double(const uint8_t* buffer) {

ifdef IS_LITTLE_ENDIAN

double dvalue;
memcpy(&dvalue, buffer, sizeof(double));
return dvalue;

else

uint64_t uvalue;
memcpy(&uvalue, buffer, sizeof(uint64_t));
uvalue = le64toh(uvalue);
return *(*double)&uvalue;

endif

}

kueiwoodwolf avatar Sep 16 '14 02:09 kueiwoodwolf