LINUX.ORG.RU

Вылавливание bugs в чужом коде


0

0

Доброго времени суток уважаемые.
Я когда-то в Сети видел доку по устранению ошибок в чужом коде на русском (или english точно не помню). Жаль, тогда не сохранил. А при установке некоторых прог выскакивают ошибки Кумпиятства ©, извините за каламбур компиляции.
Так вот, чтобы исправить код я еще не силен, а установить оччччень необходимо. Может кто-то знает адрес расположения руководства. Заранее благодарю за содействие.

С уважение Александр ☻

Ответ на: комментарий от Vinill

Я вполне серьезно. Действительно давно в Сети видел такую доку.
Непомню названия, расположения.
Дока, кстати очень интересная.
Может кто-то подскажет?

COBICTb
() автор топика
Ответ на: комментарий от COBICTb

Есть такая прога под названием check_sec которая способна находить в исходниках потенциальные ошибки. Ещё кажись valgrind неплохо помогает.

#!/bin/sh --                                                                                                                                 
                                                                                                                                             
#                                                                                                                                            
# grep for some things which may look like security problems.                                                                                
#                                                                                                                                            
# Derived with minimal changes from the Mutt MUA sources.                                                                                    
#                                                                                                                                            
                                                                                                                                             
TMPFILE="`mktemp check_sec.tmp.XXXXXX`" || exit 1                                                                                            
                                                                                                                                             
RV=0;                                                                                                                                        
                                                                                                                                             
do_check_files ()                                                                                                                            
{                                                                                                                                            
        pattern="$1" ; shift                                                                                                                 
        magic="$1" ; shift                                                                                                                   
        msg="$1" ; shift                                                                                                                     
        egrep -n "$pattern" "$@"                | \                                                                                          
                grep -v '^[^     ]*:[^  ]*#'    | \                                                                                          
                fgrep -v "$magic" > $TMPFILE                                                                                                 
                                                                                                                                             
        test -s $TMPFILE && {                                                                                                                
                echo "$msg" ;                                                                                                                
                cat $TMPFILE;                                                                                                                
                rm -f $TMPFILE;                                                                                                              
                RV=1;                                                                                                                        
        }                                                                                                                                    
}                                                                                                                                            
                                                                                                                                             
do_check ()                                                                                                                                  
{                                                                                                                                            
        do_check_files "$1" "$2" "$3" \                                                                                                      
        `find . \( \( -path ./intl -o -path ./SDK \) -prune \) \                                                                             
                -o \( -name '*.c' \                                                                                                          
                      -o -name '*.cc' \                                                                                                      
                      -o -name '*.cpp' \                                                                                                     
                      -o -name '*.h' \                                                                                                       
                      -o -name '*.hh' \                                                                                                      
                      -o -name '*.inl' \                                                                                                     
                   \) -print`                                                                                                                
}                                                                                                                                            
                                                                                                                                             
do_check '\<fopen.*'\"'.*[wa]' __FOPEN_CHECKED__ "Alert: Unchecked fopen calls."                                                             
do_check '\<strcpy' __STRCPY_CHECKED__ "Alert: Unchecked strcpy calls."                                                                      
do_check '\<strcat' __STRCAT_CHECKED__ "Alert: Unchecked strcat calls."                                                                      
do_check '\<sw?printf.*%([0-9]*\$)?(l|ll|q|L)?[sS]' __SPRINTF_CHECKED__ "Alert: Unchecked sprintf calls."                                    
do_check '\<[sf]?w?scanf.*%(l|ll|L|q)?[sS[]' __SCANF_CHECKED__ "Alert: Unchecked scanf calls."                                               
                                                                                                                                             
# # don't do this check on others' code.                                                                                                     
# do_check_files '\<(malloc|calloc|realloc|free|strdup)[        ]*\(' __MEM_CHECKED__ "Alert: Use of traditional memory management calls." \ 
#       *.c tools*/*.c                                                                                                                       
                                                                                                                                             
do_check '\<(malloc|calloc|realloc|free|strdup)[        ]*\(' __MEM_CHECKED__ "Alert: Use of traditional memory management calls."           
                                                                                                                                             
rm -f $TMPFILE                                                                                                                               
exit $RV                                                                                                                                     

cvv ★★★★★
()

А ещё синхронизация версий используемых пакетов с теми которые юзал автор тоже иногда неплохо помогает

Иногда если установлено несколько венрсий возможно имеет смысл изменить текущую

Ну а если ты пытаешся собрать gtk+ or gnome то скорее всего проще будет скачать собраный пакет. Хотя можно порекомендовать попробовать тотальную пересборку зависимостей(иногда помагает)

cvv ★★★★★
()
Ответ на: комментарий от ananas

Оч. полезная ссылка. Лучше за документацию.
Скачал мануал, исходники докачиваю.
Бо-о-о-о-о-о-ольшое человеческое спасибо за подсказку :-)

COBICTb
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.