X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fwebsock.c;h=0bbd56ac6471c3cb44de90593a029df04de589cf;hb=80444c55e5debc4807df81342e537b5a4e6c4971;hp=f79feb5ec36d733de4a03bedececa275b0fe9a2c;hpb=2243a0dd1adc75530bed663db808971789729df3;p=src%2Fapp-framework-binder.git diff --git a/src/websock.c b/src/websock.c index f79feb5e..0bbd56ac 100644 --- a/src/websock.c +++ b/src/websock.c @@ -45,7 +45,7 @@ #define FRAME_SET_RSV3(BYTE) (((BYTE) & 0x01) << 4) #define FRAME_SET_OPCODE(BYTE) ((BYTE) & 0x0F) #define FRAME_SET_MASK(BYTE) (((BYTE) & 0x01) << 7) -#define FRAME_SET_LENGTH(X64, IDX) (unsigned char)(((X64) >> ((IDX)*8)) & 0xFF) +#define FRAME_SET_LENGTH(X64, IDX) (unsigned char)((sizeof(X64)) <= (IDX) ? 0 : (((X64) >> ((IDX)*8)) & 0xFF)) #define OPCODE_CONTINUATION 0x0 #define OPCODE_TEXT 0x1 @@ -312,6 +312,7 @@ loop: ws->lenhead = 0; ws->szhead = 2; ws->state = STATE_START; + /*@fallthrough@*/ case STATE_START: /* read the header */ @@ -342,12 +343,15 @@ loop: switch (FRAME_GET_PAYLOAD_LEN(ws->header[1])) { case 127: ws->szhead += 6; + /*@fallthrough@*/ case 126: ws->szhead += 2; + /*@fallthrough@*/ default: ws->szhead += 4 * FRAME_GET_MASK(ws->header[1]); } ws->state = STATE_LENGTH; + /*@fallthrough@*/ case STATE_LENGTH: /* continue to read the header */