diff --git a/src/llama-grammar.cpp b/src/llama-grammar.cpp index deffec8c07..0a8a61e7e8 100644 --- a/src/llama-grammar.cpp +++ b/src/llama-grammar.cpp @@ -194,7 +194,11 @@ static std::pair 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::max()) { + throw std::runtime_error(std::string("parsed token id is too big at ") + pos); + } + uint32_t token_id = static_cast(id); pos = int_end; if (*pos != ']') { throw std::runtime_error(std::string("expecting ']' at ") + pos);