gug-bg-herd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [kazehakase]: FTBFS под GNU/Hurd: mozilla.cpp:132: error: 'PATH_MAX'


From: Dimitur Kirov
Subject: Re: [kazehakase]: FTBFS под GNU/Hurd: mozilla.cpp:132: error: 'PATH_MAX' was not declared in this scope
Date: Thu, 20 Aug 2009 17:40:46 +0000

Yavor Doganov <address@hidden> wrote:
> if (strlen(xpcomPath) < allocated -1)
strlen трябва да се избягва, освен ако не сме сигурни, че xpcomPath
съдържа \0, а като гледам - не сме
реално, ако резултатът от този if е грешка, програмата може да забие,
или да се получи дупка в сигурността.

второто, за което се сещам е, че g_malloc заделя памет, но веднага след
заделянето, тази памет може да има произволно съдържание. т.е. може да
има \0 байт някъде на произволна позиция и ако
GRE_GetGREPathWithProperties не е променила xpcomPath тогава
strlen(xpcomPath) може да е по-малко от 'allocated - 1' Това ще доведе
до грешка в логиката.


Моето предложение е, (ако наистина се налага този алгоритъм) да заделиш с
един байт повече памет и да я зануляваш

 * ползвай g_malloc0 вместо g_malloc
 * GRE_GetGREPathWithProperties (&greVersion, 1,
                                 nsnull, 0,
                                 xpcomPath,
                                 allocated - 1);

   - така ще сме сигурни, че има 0 бит в xpcomPath

 * проверка 
     if (strlen(xpcomPath) < allocated -2)

Не знам по време на цикъла дали NS_FAILED(rv) е истина, в случай че
дължината на пътят е по-малка от 'allocated'. Ако може да използваш
NS_FAILED вместо strlen би било по-добре




reply via email to

[Prev in Thread] Current Thread [Next in Thread]