尝试计算 BPF 中字符串中正确的字符数
Trying to count the correct number of characters in a string in BPF
我正在尝试计算 BPF 中传入的指针字符串,但留下了这个我无法理解的非常长的错误。我基本上是在尝试在 BPF 中重新创建 strlen 来计算我传入的字符串 * 的大小。可以在此处看到错误中有趣的区域:
R1 min value is outside of the allowed memory range processed 2353
insns (limit 1000000) max_states_per_insn 1 total_states 242
peak_states 242 mark_read 2
知道如何解决其他问题吗?
这是我写的代码:
int stringLength(char* txt)
{
int i=0,count=0;
while(txt[i++]!='[=10=]'){
count+=1;
}
return count;
}
这是我在主 BPF 函数中调用的辅助函数。
该错误与超出范围的访问有关。您在 while(txt[i++]!='[=10=]')
中的条件假设字符串 does 以 NULL 字符结尾,但实际上您(或更具体地说,验证者)对此无法保证。尝试扩展条件以确保您没有超出字符串的长度。
我正在尝试计算 BPF 中传入的指针字符串,但留下了这个我无法理解的非常长的错误。我基本上是在尝试在 BPF 中重新创建 strlen 来计算我传入的字符串 * 的大小。可以在此处看到错误中有趣的区域:
R1 min value is outside of the allowed memory range processed 2353 insns (limit 1000000) max_states_per_insn 1 total_states 242 peak_states 242 mark_read 2
知道如何解决其他问题吗?
这是我写的代码:
int stringLength(char* txt)
{
int i=0,count=0;
while(txt[i++]!='[=10=]'){
count+=1;
}
return count;
}
这是我在主 BPF 函数中调用的辅助函数。
该错误与超出范围的访问有关。您在 while(txt[i++]!='[=10=]')
中的条件假设字符串 does 以 NULL 字符结尾,但实际上您(或更具体地说,验证者)对此无法保证。尝试扩展条件以确保您没有超出字符串的长度。