当我读到涉及strtol的易受攻击的C程序时,我遇到了这个问题。以下是代码
#include <stdio.h>
void f (int i, int j) {
int a[50];
a[i] += j;
}
int main (int argc, char *argv[]) {
int x = 10, y, z;
if (argc > 1) {
y = strtol (argv[1], NULL, 10);
z = strtol (argv[2], NULL, 10);
f(y, z);
x = 20;
printf ("x=%d\n", x);
}
return 0;
}
调用strtol(s, NULL, 10)
返回写为的整数
十进制表示法中的字符串s。应该给出什么输入来将x值打印为10以及提供这些输入背后的想法是什么?