を使用してhiredis
います。hiredis
APIがあります:
void* redisCommand(redisContext *c, char *format, ...)
フォーマットが「\0」を含む ac string の場合、フォーマットは切り捨てられます。これを修正する方法は?
C と C++ は異なる言語です。
C では、stringは、定義上、null 以外の文字の連続したシーケンスであり、その後に null 文字ターミネータが続きます。それ以外は文字列ではありません。
C 文字列のみを受け入れる関数を使用している場合、他に有効なものはなく、それは設計上の決定であり、「修正」を必要とする「バグ」ではありません。Hiredisのソース コードを入手できる場合は、そのソース コードを調べることで、さらに洞察を得ることができる場合があります。
バイナリ セーフ コマンドを使用します。
redisCommand("set %b %b", key, keyLen, value, valueLen);