Commit 5cf3a3528 for llama.cpp
commit 5cf3a35287163f79a302a15db66f0fa386d94d10
Author: Daniel Kuts <kutz@ispras.ru>
Date: Thu Sep 24 21:43:26 2026 +0300
llama-grammar: fix numeric truncation for token_id parsing (#29382)
diff --git a/src/llama-grammar.cpp b/src/llama-grammar.cpp
index deffec8c0..0a8a61e7e 100644
--- a/src/llama-grammar.cpp
+++ b/src/llama-grammar.cpp
@@ -194,7 +194,11 @@ static std::pair<uint32_t, const char *> parse_token(const llama_vocab * vocab,
if (*pos == '[') {
pos++;
const char * int_end = parse_int(pos);
- uint32_t token_id = std::stoul(std::string(pos, int_end - pos));
+ unsigned long id = std::stoul(std::string(pos, int_end - pos));
+ if (id > std::numeric_limits<uint32_t>::max()) {
+ throw std::runtime_error(std::string("parsed token id is too big at ") + pos);
+ }
+ uint32_t token_id = static_cast<uint32_t>(id);
pos = int_end;
if (*pos != ']') {
throw std::runtime_error(std::string("expecting ']' at ") + pos);