paho.mqtt.c icon indicating copy to clipboard operation
paho.mqtt.c copied to clipboard

fix: MQTTPacket.c read&write Int/Int4 error

Open zhizhi-dev opened this issue 2 years ago • 5 comments

MQTTPacket.c read&write Int/Int4 error readInt writeInt readInt4 writeInt4

eg: writeInt4(0xFFFFFFFF)

zhizhi-dev avatar Feb 17 '23 03:02 zhizhi-dev

Signed-off-by: lijinggang [email protected]

zhizhi-dev avatar Feb 17 '23 04:02 zhizhi-dev

Looks like there's a problem: https://github.com/eclipse/paho.mqtt.c/issues/1372

icraggs avatar Jun 19 '23 11:06 icraggs

Looks like there's a problem: #1372 my problem, readInt realy means readInt16 ? Or readUInt16 ?

Two Byte Integer

zhizhi-dev avatar Jun 21 '23 03:06 zhizhi-dev

Looks like there's a problem: #1372 my problem, readInt realy means readInt16 ? Or readUInt16 ?

Two Byte Integer

int readInt(char** pptr) {
        char *ptr = *pptr;
        uint16_t val = ((((uint16_t)ptr[0]) << 8) | (uint8_t)ptr[1]);
       *pptr += 2;
       return val;
}

zhizhi-dev avatar Jun 21 '23 03:06 zhizhi-dev

Looks like there's a problem: #1372 my problem, readInt realy means readInt16 ? Or readUInt16 ?

Two Byte Integer

int readInt(char** pptr) {
        char *ptr = *pptr;
        uint16_t val = ((((uint16_t)ptr[0]) << 8) | (uint8_t)ptr[1]);
       *pptr += 2;
       return val;
}

suggest:

  1. change Integer type to what it's extra is. readInt will be readUInt16,
  2. using Intege type from <stdint.h> , link uint16_t , uint32_t
  3. char* should change to uint8_t or typedef byte_t

zhizhi-dev avatar Jun 21 '23 03:06 zhizhi-dev