Changeset 6135

Show
Ignore:
Timestamp:
04/08/08 02:42:55 (8 months ago)
Author:
flynd
Message:

Don't allocate variable sized arrays on stack. Patch from #1504 to fix some compiler warnings.

Location:
trunk/licq/src
Files:
5 modified

Legend:

Unmodified
Added
Removed
  • trunk/licq/src/icqd-chat.cpp

    r5279 r6135  
    12921292         sizeFontName = u->chatQueue[1] | (u->chatQueue[2] << 8); 
    12931293         if (u->chatQueue.size() < (unsigned long)(sizeFontName + 2 + 3)) return true; 
    1294          char nameFont[sizeFontName + 1]; 
     1294         char* nameFont = new char[sizeFontName + 1]; 
    12951295         for (i = 0; i < sizeFontName; i++) 
    12961296            nameFont[i] = u->chatQueue[i + 3]; 
     
    13061306 
    13071307         PushChatEvent(new CChatEvent(CHAT_FONTxFAMILY, u)); 
     1308         delete [] nameFont; 
    13081309         break; 
    13091310      } 
     
    16051606           unsigned short sizeFontName, i; 
    16061607           sizeFontName = u->chatQueue[0] | (u->chatQueue[1] << 8); 
    1607            char nameFont[sizeFontName + 1]; 
     1608           char* nameFont = new char[sizeFontName + 1]; 
    16081609           for (i = 0; i < sizeFontName; i++) 
    16091610              nameFont[i] = u->chatQueue[i + 2]; 
     
    16171618           //the size includes the following character, so don't dequeue it 
    16181619           chatSize--; 
     1620           delete [] nameFont; 
    16191621           break; 
    16201622        } 
  • trunk/licq/src/icqd-srv.cpp

    r6119 r6135  
    30353035      nMsgLen -= 4; 
    30363036 
    3037       char* szMessage = new char[nMsgLen+1]; 
     3037        char* szMessage = new char[nMsgLen+1]; 
    30383038      for (int i = 0; i < nMsgLen; i++) 
    30393039        szMessage[i] = msgTxt.UnpackChar(); 
     
    38423842    packet >> nAckFlags >> nMsgFlags >> nLen; 
    38433843     
    3844     char szMessage[nLen + 1]; 
     3844    char* szMessage = new char[nLen + 1]; 
    38453845    for (unsigned short i = 0; i < nLen; i++) 
    38463846      packet >> szMessage[i]; 
     
    38863886    } 
    38873887    gUserManager.DropUser(u); 
    3888      
     3888 
     3889    delete [] szMessage; 
     3890 
    38893891    ICQEvent *e = DoneServerEvent(nMsgID, EVENT_ACKED); 
    38903892    if (e) 
  • trunk/licq/src/icqd-tcp.cpp

    r6119 r6135  
    343343  gTranslator.ClientToServer(szDescDos); 
    344344  int n = strlen_safe(url) + strlen_safe(szDescDos) + 2; 
    345   char m[n]; 
     345  char* m = new char[n]; 
    346346  if (!online && n > MAX_MESSAGE_SIZE && szDescDos != NULL) 
    347347    szDescDos[MAX_MESSAGE_SIZE - strlen_safe(url) - 2] = '\0'; 
     
    392392  if (szDescDos) 
    393393    delete [] szDescDos; 
     394 
     395  delete [] m; 
    394396 
    395397  if (result != NULL) 
     
    19291931  else 
    19301932  { 
    1931    
     1933 
    19321934  // read in the message minus any stupid DOS \r's 
    1933   char messageTmp[messageLen + 1]; 
     1935  char* messageTmp = new char[messageLen + 1]; 
    19341936  unsigned short j = 0; 
    19351937  for (unsigned short i = 0; i < messageLen; i++) 
     
    19411943 
    19421944  message = parseRTF(messageTmp); 
     1945  delete [] messageTmp; 
    19431946 
    19441947  if (nInVersion <= 4) 
     
    23182321        packet >> junkLong 
    23192322               >> nLenFilename; 
    2320         char szFilename[nLenFilename+1]; 
     2323        char* szFilename = new char[nLenFilename+1]; 
    23212324        for (unsigned short i = 0; i < nLenFilename; i++) 
    23222325           packet >> szFilename[i]; 
     
    23512354                                       filelist, theSequence, TIME_NOW, 
    23522355                                       nMask | licqVersion); 
     2356        delete [] szFilename; 
    23532357        // Add the user to our list if they are new 
    23542358        if (bNewUser) 
     
    23792383                packet >> nLongLen; // plugin name len 
    23802384 
    2381                 char szPlugin[nLongLen+1]; 
     2385                                char* szPlugin = new char[nLongLen+1]; 
    23822386                for (unsigned long i = 0; i < nLongLen; i++) 
    23832387                    packet >> szPlugin[i]; 
     
    24002404                { 
    24012405                    gLog.Info(tr("%sUnknown ICBM plugin type: %s\n"), L_TCPxSTR, szPlugin); 
    2402                     break; 
    2403                 } 
    2404  
    2405                 char szMessage[nLongLen+1]; 
     2406          delete [] szPlugin; 
     2407      break; 
     2408    } 
     2409 
     2410        char* szMessage = new char[nLongLen+1]; 
    24062411                for (unsigned long i = 0; i < nLongLen; i++) 
    24072412                    packet >> szMessage[i]; 
     
    24162421                    packet.incDataPosRead(2); // unknown 
    24172422                    packet >> nLen; // filename len, including NULL 
    2418                     char szFilename[nLen+1]; 
     2423            char* szFilename = new char[nLen+1]; 
    24192424                    for (unsigned short i = 0; i < nLen; i++) 
    24202425                        packet >> szFilename[i]; 
     
    24322437                    gTranslator.ServerToClient(szMessage); 
    24332438                    CEventFile *e = new CEventFile(szFilename, szMessage, nFileSize, 
    2434                                                                                  filelist, theSequence, TIME_NOW, nMask); 
     2439                filelist, theSequence, TIME_NOW, nMask); 
     2440            delete [] szFilename; 
     2441 
    24352442                    if (bNewUser) 
    24362443                    { 
     
    25442551                } // switch nICBMCommand 
    25452552 
    2546                 break; 
    2547             } 
     2553        delete [] szPlugin; 
     2554        delete [] szMessage; 
     2555 
     2556    break; 
     2557      } 
    25482558 
    25492559      // Old-style encryption request: 
     
    27702780                packet >> nLongLen; // Plugin name len 
    27712781 
    2772                 char szPlugin[nLongLen+1]; 
     2782        char* szPlugin = new char[nLongLen+1]; 
    27732783                for (unsigned long i = 0; i < nLongLen; i++) 
    27742784                    packet >> szPlugin[i]; 
     
    27922802                                        szPlugin); 
    27932803                    gUserManager.DropUser(u); 
    2794                     return true; 
    2795                 } 
    2796  
    2797                 packet >> nLongLen; 
    2798                 char szMessage[nLongLen+1]; 
     2804          delete [] szPlugin; 
     2805      return true; 
     2806    } 
     2807 
     2808    packet >> nLongLen; 
     2809        char* szMessage = new char[nLongLen+1]; 
    27992810                for (unsigned short i = 0; i < nLongLen; i++) 
    28002811                    packet >> szMessage[i]; 
     
    28412852                } // switch nICBMCommand 
    28422853 
    2843                 break; 
    2844             } 
     2854        delete [] szPlugin; 
     2855        delete [] szMessage; 
     2856 
     2857    break; 
     2858      } 
    28452859 
    28462860#ifdef USE_OPENSSL 
     
    33343348              packet.incDataPosRead(4); //Unknown 
    33353349              unsigned long nLen = packet.UnpackUnsignedLong(); 
    3336               char szName[nLen+1]; 
     3350              char* szName = new char[nLen+1]; 
    33373351              for (unsigned long i = 0; i < nLen; i++) 
    33383352                packet >> szName[i]; 
     
    33403354 
    33413355              nLen = packet.UnpackUnsignedLong(); 
    3342               char szFullName[nLen+1]; 
     3356              char* szFullName = new char[nLen+1]; 
    33433357              for (unsigned long i = 0; i < nLen; i++) 
    33443358                packet >> szFullName[i]; 
     
    33493363              gLog.Info("%s%s has %s (%s).\n", szInfo, u->GetAlias(), szName, 
    33503364                                               szFullName); 
     3365              delete [] szName; 
     3366              delete [] szFullName; 
    33513367            } 
    33523368            break; 
     
    33563372          { 
    33573373            gLog.Info("%sPhone Book reply from %s.\n", szInfo, u->GetAlias()); 
    3358             struct PhoneBookEntry pb[nEntries]; 
     3374            PhoneBookEntry *pb = new PhoneBookEntry[nEntries]; 
    33593375            for (unsigned long i = 0; i < nEntries; i ++) 
    33603376            { 
     
    34293445            u->SetEnableSave(true); 
    34303446            u->SavePhoneBookInfo(); 
     3447            delete [] pb; 
    34313448 
    34323449            PushPluginSignal(new CICQSignal(SIGNAL_UPDATExUSER, USER_PHONExBOOK, 
     
    34553472 
    34563473            unsigned long nLen = packet.UnpackUnsignedLong(); 
    3457             char data[nLen]; 
     3474            char* data = new char[nLen]; 
    34583475            for (unsigned long i = 0; i < nLen; i++) 
    34593476            { 
     
    34623479 
    34633480            write(nFD, data, nLen); 
     3481            delete [] data; 
    34643482 
    34653483            u->SetEnableSave(false); 
     
    36613679            packet.incDataPosRead(4); //Unknown 
    36623680            unsigned long nLen = packet.UnpackUnsignedLong(); 
    3663             char szName[nLen+1]; 
     3681            char* szName = new char[nLen+1]; 
    36643682            for (unsigned long i = 0; i < nLen; i++) 
    36653683              packet >> szName[i]; 
     
    36673685 
    36683686            nLen = packet.UnpackUnsignedLong(); 
    3669             char szFullName[nLen+1]; 
     3687            char* szFullName = new char[nLen+1]; 
    36703688            for (unsigned long i = 0; i < nLen; i++) 
    36713689              packet >> szFullName[i]; 
     
    36763694            gLog.Info("%s%s has %s (%s).\n", szInfo, u->GetAlias(), szName, 
    36773695                                             szFullName); 
     3696            delete [] szName; 
     3697            delete [] szFullName; 
    36783698          } 
    36793699        } 
  • trunk/licq/src/icqd.cpp

    r6119 r6135  
    10431043 
    10441044  size_t nLen = strlen(BASE_DIR) + sizeof(file) + sizeof(suffix) + 2; 
    1045   char szTmpName[nLen], szFilename[nLen], buff[128]; 
     1045  char* szTmpName = new char[nLen]; 
     1046  char* szFilename = new char[nLen]; 
     1047  char buff[128]; 
    10461048  int nRet, n, fd; 
    10471049  
     
    10591061      gLog.Error("%sFailed updating %s: `%s'\n", L_ERRORxSTR, 
    10601062                 szFilename, strerror(errno)); 
     1063    delete [] szTmpName; 
     1064    delete [] szFilename; 
    10611065    return; 
    10621066  } 
     
    11061110    gLog.Error("%sFailed updating %s: `%s'\n", L_ERRORxSTR, 
    11071111               szFilename, strerror(errno)); 
     1112 
     1113  delete [] szTmpName; 
     1114  delete [] szFilename; 
    11081115} 
    11091116 
     
    25062513    if (!bIsAck) 
    25072514    { 
    2508       char szFilename[nFilenameLen+1]; 
     2515      char* szFilename = new char[nFilenameLen+1]; 
    25092516      for (unsigned short i = 0; i < nFilenameLen; i++) 
    25102517        packet >> szFilename[i]; 
     
    25192526      nEventType = ON_EVENT_FILE; 
    25202527      pEvent = e; 
     2528 
     2529      delete [] szFilename; 
    25212530    } 
    25222531    else 
     
    26142623    packet.incDataPosRead(18); 
    26152624    packet >> nLongLen; // plugin len 
    2616     char szPlugin[nLongLen+1]; 
     2625      char* szPlugin = new char[nLongLen+1]; 
    26172626    for (unsigned long i = 0; i < nLongLen; i++) 
    26182627      packet >> szPlugin[i]; 
     
    26402649 
    26412650    packet >> nLongLen; 
    2642     char szMessage[nLongLen+1]; 
     2651      char* szMessage = new char[nLongLen+1]; 
    26432652    for (unsigned long i = 0; i < nLongLen; i++) 
    26442653      packet >> szMessage[i]; 
     
    26532662    ProcessMessage(u, packet, msg, nCommand, nMask, nMsgID, 
    26542663                   nSequence, bIsAck, bNewUser); 
    2655     return; 
    2656  
    2657     break; // bah! 
    2658   } 
     2664      delete [] szPlugin; 
     2665      delete [] szMessage; 
     2666      return; 
     2667 
     2668      break; // bah! 
     2669    } 
    26592670 
    26602671  default: 
  • trunk/licq/src/onevent.cpp

    r4903 r6135  
    107107    if (strlen(szFullParam)) 
    108108    { 
    109       char szCmd[strlen(m_szCommand) + strlen(szFullParam) + 8]; 
     109      char* szCmd = new char[strlen(m_szCommand) + strlen(szFullParam) + 8]; 
    110110      sprintf(szCmd, "%s %s &", m_szCommand, szFullParam); 
    111111      system(szCmd); 
     112      delete [] szCmd; 
    112113    } 
    113114