История изменений
Исправление MOPKOBKA, (текущая версия) :
Нормальные люди используют snprintf, а у него есть как минимум ошибка недостаточного размера буфера как раз.
Он не возвращает ошибку если буфер маленький, просто тихо обрезает, а потом злоумышленник может это использовать.
#include <stdio.h>
int main() {
char path[5];
if (snprintf(path, sizeof(path), "/usr/share/useless-program") < 0)
return -1;
printf("rm -rf %s\n", path);
return 0;
}
Так что нормальные люди не используют strlcat, snprintf. Нормальные люди используют sprintf_s под управлением Microsoft (TM) (C) (Protected) (Patented) .NET CLI/C.
Исправление MOPKOBKA, :
Нормальные люди используют snprintf, а у него есть как минимум ошибка недостаточного размера буфера как раз.
Он не возвращает ошибку если буфер маленький, просто тихо обрезает, а потом злоумышленник может это использовать.
#include <stdio.h>
int main() {
char path[5];
if (snprintf(path, sizeof(path), "/usr/share/useless-program") < 0)
return -1;
printf("rm -rf %s\n", path);
return 0;
}
Так что нормальные люди не используют strlcat, snprintf. Нормальные люди используют sprintf_s под управлением Microsoft (TM) (C) (Protected) (Patented) Managed C.
Исправление MOPKOBKA, :
Нормальные люди используют snprintf, а у него есть как минимум ошибка недостаточного размера буфера как раз.
Он не возвращает ошибку если буфер маленький, просто тихо обрезает, а потом злоумышленник может это использовать.
#include <stdio.h>
int main() {
char path[5];
if (snprintf(path, sizeof(path), "/usr/share/useless-program") < 0)
return -1;
printf("rm -rf %s\n", path);
return 0;
}
Так что нормальные люди не используют strlcat, snprintf. Нормальные люди используют sprintf_s под управлением Managed C.
Исправление MOPKOBKA, :
Нормальные люди используют snprintf, а у него есть как минимум ошибка недостаточного размера буфера как раз.
Он не возвращает ошибку если буфер маленький, просто тихо обрезает, а потом злоумышленник может это использовать.
#include <stdio.h>
int main() {
char path[5];
if (snprintf(path, sizeof(path), "/usr/share/useless-program") < 0)
return -1;
printf("rm -rf %s\n", path);
return 0;
}
Так что нормальные люди не используют strlcat, snprintf. Нормальные люди используют sprintf_s.
Исправление MOPKOBKA, :
Нормальные люди используют snprintf, а у него есть как минимум ошибка недостаточного размера буфера как раз.
Он не возвращает ошибку если буфер маленький, просто тихо обрезает, а потом злоумышленник может это использовать.
#include <stdio.h>
int main() {
char path[5];
if (snprintf(path, sizeof(path), "/usr/share/useless-program") < 0)
return -1;
printf("rm -rf %s\n", path);
return 0;
}
Исходная версия MOPKOBKA, :
Нормальные люди используют snprintf, а у него есть как минимум ошибка недостаточного размера буфера как раз.
Он не возвращает ошибку если буфер маленький, просто тихо обрезает, а потом злоумышленник может это использовать.