:: Re: [DNG] netman GIT project
トップ ページ
このメッセージを削除
このメッセージに返信
著者: Rainer Weikusat
日付:  
To: dng
題目: Re: [DNG] netman GIT project
"tilt!" <tilt@???> writes:

> Hi Edward,
>
> On 08/25/2015 12:51 PM, Edward Bartolo wrote:
>> [...]
>
> Please accept merge request #1 "cleanup of backend binaries".


Two random remarks:

,----
| size_t essid_safe_strlen(uint8_t * bytes)
| {
|     size_t result;
| 
|     if(!bytes)
|         return 0;
| 
|     result = 0;
| 
|     while(*bytes != 0) {
|         bytes++;
|         result++;
|     }
| 
|     return result; 
| }

`----

A C string of length 0 is just a "\000". A NULL pointer is not a string.
Reimplementing strlen is - apart from that - a rather bizarre idea. A
usual implementation would look somewhat like this:

size_t strlen(char *s)
{
    char *r;


        r = s;
        while (*r) ++r;
        return r - s;
}


ie, it's not necessary to maintain a separate byte counter.

,----
| uint8_t essid_allowed_chars[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-";
| 
| [...]
| 
| int essid_allowed_char(uint8_t c) {
|     size_t i;
|     size_t k;
| 
|     int rv;
| 
|     rv = 0;
| 
|     k = essid_safe_strlen(essid_allowed_chars);
| 
|     for (i=0; i<k; i++)
|         if(c==essid_allowed_chars[i]) {
|             rv = 1;
| 
|             break;
|         }
| 
|     return rv;
| }

`----

A more sensible simple way to implement this would be

char *essid_allowed_chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-";

int essid_allowed_char(int c)
{
    return strchr(essid_allowed_chars, c) != NULL;
}


Considering that this enforces some kind of 'bastard URL-encoding'
(using + as prefix instead of %) for all other bytes, it's also going
make people who believe that UTF-8 would be a well supported way to
represent non-ASCII characters very unhappy.