данных в конце иногда, хм?
rd_kafka_jwt_b64_decode_payload из
https://github.com/confluentinc/librdkafka/blob/v1.9.2/src/rdkafka_sasl_oauthbearer_oidc.c, где я убрал static, чтобы использовать извне.
Я наконец-то локализировал проблему после дня дебага, но поведение очень странное.
int
main(
int argc,
char** argv)
{
const char* jwt_token = "eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJKb2huIERvZSIsImV4cCI6LTV9.Y";
for (size_t i = 0; i < 4; ++i)
{
char* decoded_payloads = nullptr;
const char* errstr = rd_kafka_jwt_b64_decode_payload(jwt_token, &decoded_payloads);
assert(!errstr);
printf("Payloads: %s;\n", decoded_payloads);
}
return 0;
}
Вывод
Payloads: {"sub":"John Doe","exp":-5};
Payloads: {"sub":"John Doe","exp":-5}ret;
Payloads: {"sub":"John Doe","exp":-5};
Payloads: {"sub":"John Doe","exp":-5}oint.url;
эти хвосты похожи на данные типа client.secret, token.endpoint.url. Посмотреть, что внутри токена можно на jwt.io - там обычный JSON
Это твоя функция? Xxxxfdecode_payloads?
нет, это из librdkafka. но даже если её вынести в main.cpp, то проблема остаётся та же. https://github.com/confluentinc/librdkafka/blob/v1.9.2/src/rdkafka_sasl_oauthbearer_oidc.c
Эта функция что ты вызываешь? static const char *rd_kafka_jwt_b64_decode_payload(const char *src, char **bufplainp) ?
А как ты не вызываешь, если она static? Это же невозможно...
Ну я убрал статик и перебилдил либу.
Вот, писал.
ШИКАРНЫЙ ПЛАН, ПАРЕНЬ!
А можно детальнее?)
Как думаешь, почему она static?
Расскажу, но это к твоей проблеме может и не иметь отношения...
Не знаю ( Думал, что по дизайну не нужно её экспортировать, поэтому и статик
Не было необходимости экспортировать
А ПОЧЕМУ не нужно еë экспортировать?
не было необходимости - чтобы не торчали лишние символы в .so?
Нет, не поэтому. Потому что она не предназначена для вызова снаружи, клиентом библиотеки. Вполне возможно, что эта функция может вызываться только из других функций этой библиотеки, которые знают как еë вызывать правильно и как правильно интерпретировать результат. Но это не точно, потому что точно это можно сказать только очень хорошо зная эту библиотеку
Разбираемся дальше...
Ну это мелочи же. Я изучил код либы, поэтому знаю как использовать
Может быть и так...
я смотрю, тут наглядный пример работы hyrum's law
Обсуждают сегодня