Устаревшие стандартные программы могут вызвать уязвимости безопасности и проблемы с переносимостью
Этот дефект возникает, когда вы используете стандартные стандартные программы функций, которые считаются устаревшими, удаленными, устаревшими или устаревшими стандартами кодирования 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 | Функция BSD API не включена в POSIX.1-2001 | Проблемы переносимости. | sysconf( _SC_OPEN_MAX ) |
gethostbyaddr | Удалено в POSIX.1-2008 | Не повторно входящий | getaddrinfo |
gethostbyname | Удалено в POSIX.1-2008 | Не повторно входящий | getnameinfo |
getpagesize | Функция BSD API не включена в 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 | Функция BSD API | Проблемы переносимости | regcomp |
re_exes | Функция BSD API | Проблемы переносимости | 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 |
Исправление зависит от первопричины дефекта. Часто детали результата показывают последовательность событий, которые привели к дефекту. Вы можете реализовать исправление на любом событии в последовательности. Если сведения о результате не отображают историю событий, можно отследить их с помощью опций правого щелчка в исходном коде и просмотреть предыдущие связанные события. Смотрите также Результаты интерпретации Bug Finder в интерфейсе пользователя Polyspace Desktop.
См. примеры исправлений ниже.
Если вы не хотите устранять проблему, добавьте комментарии к своему результату или коду, чтобы избежать другой проверки. Смотрите Адрес Результаты Polyspace через исправления ошибок или обоснования.
Группа: Безопасность |
Язык: C | C++ |
По умолчанию: Off |
Синтаксис командной строки: OBSOLETE_STD_FUNC |
Влияние: Низкое |
ИДЕНТИФИКАТОР CWE : 474, 477 |
Теги: # uprecatedFunctions |
Find defects (-checkers)
| Invalid use of standard library string routine
| Unsafe standard function
| Use of dangerous standard function