如何解决尝试在 BPF 中计算字符串中正确的字符数
我正在尝试计算 BPF 中传入的指针字符串的数量,但是我遇到了这个我无法理解的非常长的错误。我基本上是在尝试在 BPF 中重新创建 strlen 来计算我传入的字符串 * 的大小。错误的有趣区域可以在这里看到:
R1 最小值超出了处理的允许内存范围 2353 insns(限制 1000000) max_states_per_insn 1 total_states 242 峰值状态 242 标记读取 2
知道如何解决其他问题吗?
这是我写的代码:
int stringLength(char* txt)
{
int i=0,count=0;
while(txt[i++]!='\0'){
count+=1;
}
return count;
}
这是我在主 BPF 函数中调用的辅助函数。
解决方法
错误是关于超出范围的访问。您在 while(txt[i++]!='\0')
中的条件假定字符串 does 以 NULL 字符结尾,但实际上您(或更具体地说,验证者)无法保证这一点。尝试扩展条件以确保不会超出字符串的长度。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。