我考虑如何解决yacc和lex输入时间过长的问题。例如,我无法控制输入长度,我担心缓冲流攻击。
您怎么看?
答案 0 :(得分:1)
没有理由关注(f)lex或yacc / bison生成的代码。它们将重新分配缓冲区和堆栈,或报告内存不足的情况。
通常,lex和yacc的传统配置不太愿意使用额外的内存,因此病态输入可能导致解析失败并出现内存错误,但这不是安全问题。
当然,这并不能减轻您确保所有代码都没有缓冲区溢出的责任。避免固定长度的缓冲区;总是检查限制;并且从不假设malloc不会返回0.