Вероятно, ваш payload
-буфер не является строкой в том смысле, что он заканчивается \0
-характером.
Лучше использовать
strncmp((char*)payload, "{}",length) == 0)
Обратите внимание, что правильныйобработка содержимого payload
зависит от семантики, не описанной в вашем вопросе.Например, необходимо гарантировать, что length
не превышает payload
-буфера;если payload
строка длиннее "{}"
, пожалуйста, решите, хотите ли вы считать это равным или нет.
В любом случае, для strxxx
-функций требуется строка, оканчивающаяся на \0
;в противном случае очень вероятно, что вы дадите неопределенное поведение.