Устаревшие процедуры могут стать причиной уязвимостей системы безопасности и проблем с переносимостью
Этот дефект возникает при использовании стандартных процедур функций, которые считаются устаревшими, удаленными, устаревшими или устаревшими стандартами кодирования C/C + +.
| Устаревшая функция | Стандарты | Риск | Функция замены |
|---|---|---|---|
asctime | Устарело в POSIX.1-2008 | Не защищен от потоков. | strftime или asctime_s |
asctime_r | Устарело в POSIX.1-2008 | Реализация на основе небезопасной функции sprintf. | strftime или asctime_s |
bcmp | Устарело в 4.3BSD Помечено как устаревшее в POSIX.1-2001. | Возвращает функцию после нахождения первого отличающегося байта, что делает ее уязвимой для атак синхронизации. | memcmp |
bcopy | Устарело в 4.3BSD Помечено как устаревшее в POSIX.1-2001. | Возвращает функцию после нахождения первого отличающегося байта, что делает ее уязвимой для атак синхронизации. | memcpy или memmove |
brk и sbrk | Помечен как устаревший в SUSv2 и POSIX.1-2001. | malloc | |
bsd_signal | Удален в POSIX.1-2008 | sigaction | |
bzero | Помечено как устаревшее в POSIX.1-2001. Удален в POSIX.1-2008. | memset | |
ctime | Устарело в POSIX.1-2008 | Не защищен от потоков. | strftime или asctime_s |
ctime_r | Устарело в POSIX.1-2008 | Реализация на основе небезопасной функции sprintf. | strftime или asctime_s |
cuserid | Удален в POSIX.1-2001. | Не въезжает. Точная функциональность не стандартизирована, что вызывает проблемы с переносимостью. | getpwuid |
ecvt и fcvt | Помечено как устаревшее в POSIX.1-2001. Удален в POSIX.1-2008 | Не въезжает | snprintf |
ecvt_r и fcvt_r | Помечено как устаревшее в POSIX.1-2001. Удален в POSIX.1-2008 | snprintf | |
ftime | Удален в POSIX.1-2008 | time, gettimeofday, clock_gettime | |
gamma, gammaf, gammal | Функция не указана ни в одном стандарте из-за исторических изменений | Проблемы переносимости. | tgamma, lgamma |
gcvt | Помечено как устаревшее в POSIX.1-2001. Удален в POSIX.1-2008. | snprintf | |
getcontext | Удален в POSIX.1-2008. | Проблемы переносимости. | Вместо этого используйте поток POSIX. |
getdtablesize | Функция API BSD не включена в POSIX.1-2001 | Проблемы переносимости. | sysconf( _SC_OPEN_MAX ) |
gethostbyaddr | Удален в POSIX.1-2008 | Не въезжает | getaddrinfo |
gethostbyname | Удален в POSIX.1-2008 | Не въезжает | getnameinfo |
getpagesize | Функция API BSD не включена в POSIX.1-2001 | Проблемы переносимости. | sysconf( _SC_PAGESIZE ) |
getpass | Удален в POSIX.1-2001. | Не въезжает. | getpwuid |
getw | Нет в POSIX.1-2001. | fread | |
getwd | Отмечено наследие в POSIX.1-2001. Удален в POSIX.1-2008. | getcwd | |
index | Помечено как устаревшее в POSIX.1-2001. Удален в POSIX.1-2008. | strchr | |
makecontext | Удален в POSIX.1-2008. | Проблемы переносимости. | Вместо этого используйте поток POSIX. |
memalign | Появляется в SunOS 4.1.3. Не в 4.4 BSD или POSIX.1-2001 | posix_memalign | |
mktemp | Удален в POSIX.1-2008. | Сгенерированные имена являются предсказуемыми и могут вызвать расовое состояние. | mkstemp удаляет расовый риск |
pthread_attr_getstackaddr и pthread_attr_setstackaddr | Неясности в спецификации stackaddr атрибут вызывает проблемы переносимости | pthread_attr_getstack и pthread_attr_setstack | |
putw | Нет в POSIX.1-2001. | Проблемы переносимости. | fwrite |
qecvt и qfcvt | Помечен как устаревший в POSIX.1-2001, удален в POSIX.1-2008 | snprintf | |
qecvt_r и qfcvt_r | Помечен как устаревший в POSIX.1-2001, удален в POSIX.1-2008 | snprintf | |
rand_r | Помечено как устаревшее в POSIX.1-2008 | ||
re_comp | Функция API BSD | Проблемы переносимости | regcomp |
re_exes | Функция API BSD | Проблемы переносимости | regexec |
rindex | Помечено как устаревшее в POSIX.1-2001. Удален в POSIX.1-2008. | strrchr | |
scalb | Удален в POSIX.1-2008 | scalbln, scalblnf, или scalblnl | |
sigblock | 4.3BSD API сигнала, происхождение которого неясно | sigprocmask | |
sigmask | 4.3BSD API сигнала, происхождение которого неясно | sigprocmask | |
sigsetmask | 4.3BSD API сигнала, происхождение которого неясно | sigprocmask | |
sigstack | Интерфейс устарел и не реализован на большинстве платформ. | Проблемы переносимости. | sigaltstack |
sigvec | 4.3BSD API сигнала, происхождение которого неясно | sigaction | |
swapcontext | Удален в POSIX.1-2008 | Проблемы переносимости. | Используйте потоки POSIX. |
tmpnam и tmpnam_r | Помечено как устаревшее в POSIX.1-2008. | Эта функция генерирует различную строку при каждом вызове до TMP_MAX раз. Если он вызывается более TMP_MAX раз, поведение определяется реализацией. | mkstemp, tmpfile |
ttyslot | Удален в POSIX.1-2001. | ||
ualarm | Помечено как устаревшее в POSIX.1-2001. Удален в POSIX.1-2008. | Ошибки указаны недостаточно | setitimer или POSIX timer_create |
usleep | Удален в POSIX.1-2008. | nanosleep | |
utime | SVr4, POSIX.1-2001. POSIX.1-2008 помечает как устаревшие. | ||
valloc | Помечено как устаревшее в 4.3BSD. Помечено как устаревшее в SUSv2. Удален из POSIX.1-2001 | posix_memalign | |
vfork | Удален из POSIX.1-2008 | Недостаточно указано в предыдущих стандартах. | fork |
wcswcs | Эта функция не была включена в заключительную ISO/IEC 9899:1990/Amendment 1:1995 (E). | wcsstr | |
WinExec | WinAPI предоставляет эту функцию только для 16-разрядной совместимости Windows. | CreateProcess | |
LoadModule | WinAPI предоставляет эту функцию только для 16-разрядной совместимости Windows. | CreateProcess |
Исправление зависит от первопричины дефекта. Часто детали результата показывают последовательность событий, которые привели к дефекту. Исправление может быть реализовано для любого события в последовательности. Если сведения о результатах не отображают историю событий, можно выполнить обратную трассировку, щелкнув правой кнопкой мыши параметры в исходном коде и просмотреть предыдущие связанные события. См. также раздел Интерпретация результатов поиска ошибок в интерфейсе пользователя Polyspace Desktop.
См. примеры исправлений ниже.
Если вы не хотите устранять проблему, добавьте комментарии к результату или коду, чтобы избежать другой проверки. См. раздел Результаты анализа пространства адресов с помощью исправлений ошибок или обоснований.
| Группа: Безопасность |
| Язык: C | C++ |
| По умолчанию: Откл. |
Синтаксис командной строки: OBSOLETE_STD_FUNC |
| Воздействие: Низкий |
| CWE ID: 474, 477 |
| Теги: # устаревшие Функции |
Find defects (-checkers) | Invalid use of standard library string routine | Unsafe standard function | Use of dangerous standard function