У меня есть такой код C, и после первого ввода, если я ввешу большую строку, наконец, последние символы выполняются как команда в моей Linux Shell, которая может использоваться для инъекции команды, как я нашел чтение() функция является основной причиной, почему это происходит, но не понимает, почему, val
это просто INT:C function read() приводит к вводу команды
if (val > 0) {
struct in_addr *addr;
int addrMultVal = val*sizeof(*addr);
char *buf2 = malloc(addrMultVal);
for (i = 0; i < val; i++) {
if (read(0, buf2, sizeof(*addr)) < 0) {
return 0;
}
}
done = 1;
}
'INT addrMultVal = VAL * SizeOf (адрес);' следует 'INT addrMultVal = значение * SizeOf (* адрес);' – EOF
@LPs он говорит, что: ошибка: 'in_addr' необъявленную – Shota
Вы имеете в виду ' sizeof (* addr) 'позже, поэтому выражение должно быть в порядке. Можете ли вы просто изменить свой вопрос, чтобы точно показать, как выглядит ваш код после изменения? – Useless