Changeset 3542 for trunk/src


Ignore:
Timestamp:
Jan 29, 2022, 2:36:00 AM (3 years ago)
Author:
bird
Message:

kash: GetStdHandle can return NULL and we must not treat it as a valid handle as that'll cause trouble when forking a child later on.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/kash/shfile.c

    r3505 r3542  
    477477    while (new_size < fdMin)
    478478        new_size += SHFILE_GROW;
     479    TRACE2((NULL, "shfile_grow_tab_locked: old %p / %d entries; new size: %d\n", pfdtab->tab, pfdtab->size, new_size));
    479480    new_tab = sh_realloc(shthread_get_shell(), pfdtab->tab, new_size * sizeof(shfile));
    480481    if (new_tab)
     
    498499        pfdtab->tab = new_tab;
    499500        pfdtab->size = new_size;
     501
     502        TRACE2((NULL, "shfile_grow_tab_locked: new %p / %d entries\n", pfdtab->tab, pfdtab->size));
    500503    }
    501504
     
    10251028                        ph -= dwPerH;
    10261029
    1027                         if (    (paf[i] & (FOPEN | FNOINHERIT)) == FOPEN
    1028                             &&  *ph != (uint32_t)INVALID_HANDLE_VALUE)
     1030                        if (   (paf[i] & (FOPEN | FNOINHERIT)) == FOPEN
     1031                            && *ph != (uint32_t)INVALID_HANDLE_VALUE
     1032                            && *ph != 0)
    10291033                        {
    10301034                            HANDLE  h = (HANDLE)(intptr_t)*ph;
     
    10421046                                if (dwErr == ERROR_INVALID_HANDLE)
    10431047                                    continue;
    1044                                 else if (dwErr == NO_ERROR)
     1048                                if (dwErr == NO_ERROR)
    10451049                                {
    10461050                                    fFlags = 0;
     
    10821086                    {
    10831087                        HANDLE hFile = GetStdHandle(aStdHandles[i].dwStdHandle);
    1084                         if (hFile != INVALID_HANDLE_VALUE)
     1088                        if (   hFile != INVALID_HANDLE_VALUE
     1089                            && hFile != NULL)
    10851090                        {
    10861091                            DWORD       dwType  = GetFileType(hFile);
Note: See TracChangeset for help on using the changeset viewer.