OVERFLOW·¨Ê½Òç³ö°²È«¡¸´Ó±ÀÀ£µ½ÕƿصÄʵս½âÎö¡¹
ÄãÓÐûÓйýÕâÖÖ¾Àú£¿ÉîÒ¹¼Ó°à£¬´úÂëÅܵúúõģ¬ºöÈ»·¨Ê½¡°Å¾¡±Ò»Ï±ÀÀ£ÁË£¬ÆÁÄ»ÉÏÒ»´®Äã¿´²»¶®µÄ±¨´í£¬ÀïÃæºÜ¿ÉÄܾͲØ×Å ¡°OVERFLOW¡±¡£ÄÇÒ»¿Ì£¬ÊDz»ÊÇÏëÔÒµçÄÔµÄÐͼÓÐÁË£¿±ð»Å£¬ÕâÍæÒâ¶ùûÉèÏëÖÐÄÇôÐþºõ¡£½ñÌ죬ÔÛ¾ÍÓôó¿ÚÓï°ÑËüêþ¿ªÈàËéÁ˽²Ã÷ÏÔ¡£
Ò»¡¢ÄãµÄ·¨Ê½ÎªÉ¶ºöÈ»¡°±¬Õ¨¡±£¿Ïȸ㶮Õâ¸ö½ÐÒç³öµÄ¼Ò»ï
ÔÛÃÇÏÈ´ò¸öÆ©Ó÷¡£Äã¼ÒµÄÒ³÷£¬ÊDz»ÊǾÍÄÇô´ó£¿Äã·ÇµÃ°ÑÒ»ÄêËÄʱµÄÒ·þÈ«Èû½øÈ¥£¬Á˾־ÍÊǹñÃŹز»ÉÏ£¬Ò·þ¡°àÛ¡±Ò»ÏÂȫӿ³öÀ´£¬¸ãµÃÂúµØÀǽ塣
·¨Ê½ÀïµÄÒç³ö£¬ÏÕЩÈç³öÒ»ÕÞ¡£
µ¥Ò»Ëµ£¬·¨Ê½ÔËÐÐʱ£¬ÍÆËã»úÓöÔÚÄÚ´æÀï»®³öÒ»¿é¿é¡°Ó׸ñ×Ó¡±À´´æ·ÅÊý¾Ý¡£Ã¿¸ö¸ñ×ÓÄÜ×°¼¸¶à£¬Ôç¾Í»®¶¨ºÃÁË¡£ËùνÒç³ö£¬¾ÍÊÇÄãµÄÊý¾ÝÇÐʵ̫¶àÁË£¬¶àµ½°ÑÄǸöÓ׸ñ×Ó¸ø³Å±¬ÁË£¬Êý¾Ý¡°Á÷¡±µ½Á˲»¸ÃÈ¥µÄ´¦Ëù¡£
Õâ»áÔì³Éɶºó¹û£¿ÇáÔò·¨Ê½±ÀÀ££¬ÄãдµÄ¸å×Ó¡¢×öµÄͼȫûÁË£¬µ±³¡ÆÆ·À¡£³ÁÔò£¬ºÙ£¬Ëü¿ÉÄܱ»ºÚ¿ÍÀûÓ㬳ÉΪ¹¥»÷ÄãϵͳµÄ´óºóÃÅ¡£Ëµµ½Õâ¸ö£¬ÄãÊDz»ÊǸд¥ºó±³·¢Á¹£¿ÎÒ¼û¹ýÌ«¶àÏîÄ¿£¬Ç°ÆÚΪÁ˿죬¶ÔÊý¾ÝÌìǵ²é³ËæÇáÒױ㣬ºóÆÚÉÏÏßÖ±½Ó±»Ò»¸öÒç¶Âí½Å¸ãµ½È«Ïßå´»ú£¬ËðʧµÄÇ®¿É²»ÊÇÓ×ÊýÁ¿¡£
¶þ¡¢¼¼Êõ²»Í¨Ë×£ºÁ½´óÒç³öÀàÐÍ£¬Ò»Í¼Ãë¶®
Òç³öÖØÒª·ÖÁ½´óÁ÷ÅÉ£¬Äã֪·ÁË£¬¾ÍÄܶÔÖ¢ÏÂÒ©¡£
*
Õ»Òç³ö
* ÄĶù³öÎÊÌ⣺º¯ÊýŲÓᢲ¿ÃűäÁ¿Õâ¿éµØ¶ù¡£
* ÔõôըµÄ£º×î³£¼ûµÄ¾ÍÊǵݹ麯ÊýûдºÃÍ˳öǰÌᣬ»òÕß²¿ÃÅÊý×é±»ÈûÁËÌ«ÎÞÊý¾Ý¡£ÉèÏëһϣ¬ÄãÔÚ×À×ÓÉÏ£¨Õ»Çø£©Ò»±¾Ò»±¾ÞûÊ飬ԽÞûÔ½¸ß£¬×îºó¡°»©À²¡±Ò»ÏÂÈ«µ¹ÁË£¬»¹°ÑÅԱ߱×Ó£¨ÆäËûÊý¾Ý£©´òËéÁË¡£
* ·ÛËéÁ¦£ºÖ±½Óµ¼Ö·¨Ê½Òì³£ÖÕÖ¹£¬Segmentation Fault Õâ¸öÃýÎóÌáÐÑ£¬Ê®Óа˾žÍÊÇËü¸ãµÄ¹í¡£
*
¶ÑÒç³ö
* ÄĶù³öÎÊÌ⣺·¨Ê½ÔËÐÐʱ¶¯Ì¬ÉêÇëµÄÄڴ棨¶ÑÇø£©¡£
* ÔõôըµÄ£ººÃ±ÈÄãÓà `malloc` ÉêÇëÁËÄÜ×°10¸öÊý×ֵĿռ䣬Á˾ÖÄãÓ²ÈûÁË100¸ö½øÈ¥¡£Õâ¾ÍºÃ±ÈÄãÔÚÍ£³µ³¡£¨¶ÑÇø£©Ö»×âÁËÒ»¸ö³µÎ»£¬È´Í£ÁËÊ®Á¾³µ£¬°Ñ±ðÈ˵ijµÈ«×²ÁË¡£
* ·ÛËéÁ¦£º¸üÒñ±Î£¬¸üΣÏÕ¡£Ëü¿ÉÄܲ»»áÂíÉϱÀÀ££¬¶øÊÇ͵͵´Û¸ÄÆäËû³ÁÒªÊý¾Ý£¬»òÕß±»ÀûÓÃÀ´Ö´ÐжñÒâ´úÂ룬ÕâÏÕЩÊǰ²È«ÁìÓòµÄ¡°ÄÚ¾íÖ®Íõ¡±£¬¹¥»÷Õ߾Ͱ®×êÕâ¸ö¿Õ×Ó¡£
¸ãÃ÷ÏÔÕâÁ½µã£¬Äã¾ÍÒѾ±È°Ë³ÉµÄÐÂÊÖÇ¿ÁË¡£²»Í⣬¹â֪·ÊÇɶ»¹²»¹»£¬Ô۵ÿ´¿´Ëüµ½µ×ÄÜÈdzö¶à´óÂé·³¡£
Èý¡¢Òç³öµ½µ×¶à¿ÉÅ£¿Ò»¸ö°¸ÀýÈÃÄãÖ±ºô¡°ºÃ¼Ò»ï¡±
ÔÛ²»ËµÐéµÄ£¬Ö±½ÓÉÏÕæÊ¡£2014ÄêÄǸöºä¶¯È«ÇòµÄ ¡°ÐÄÔàµÎѪ¡±·ì϶£¬»¹¼ÇµÃÂð£¿ËüµÄµÀÀí£¬ÐÔÖÊÉϾÍÊÇÒ»ÖÖÒç³ö¡£¹¥»÷ÕßÄÜÀûÓÃËü£¬´Ó·þÎñÆ÷ÄÚ´æÀ͵¿´¡±µ½±¾¸Ã¼ÓÃܵÄÒþÖÔÐÅÏ¢£¬ºÃ±ÈÃÜÂë¡¢ÐÅÓþ¿¨ºÅ¡£
Ó°ÏìÓжà´ó£¿ È«ÇòÆäʱÖÁÉÙÈý·ÖÖ®¶þµÄÍøÕ¾¶¼ÊÜÓ°Ïì¡£¸÷´ó¹«Ë¾Á¬Ò¹´ò²¹¶¡£¬ÄǸö½¨¸´³É±¾£¬ÊÇÌìÎÄÊý×Ö¡£Õâ¸ö°¸ÀýºÝºÝ½ÌÓýÁËËùÓÐÈË£ºÒç³ö¿É²»ÊÇÈ÷¨Ê½±ÀÒ»ÏÂÄÇôµ¥Ò»£¬ËüÖ±½Ó¹ØÏµµ½
Ç®¡¢ÒþÖԺͰ²È«¡£
Ó×ÎÒÒÔΪ£¬ºÃ¶àÐÂÊÖ£¬ÉõÖÁһЩ¹¤×÷Ò»Á½ÄêµÄ°é£¬ÈÝÒ׺öÊÓÕâЩµ×²ã°²È«ÎÊÌ⣬×ܸд¥ÄÇÊÇ¡°¸ß¼¶¡±ºÚ¿Í²Å¸ãµÄÆ÷²Ä¡£µ«ÏÖʵÉÏ£¬ºÃ¶àÑϳÁ·ì϶µÄÔ´Í·£¬¾ÍÊÇһЩ¿´ËƲ»ÆðÑ۵ġ¢Ã»×öÌìǵ²é³µÄ´úÂë¡£ÄãдµÄÿһ¸öÊý×飬ÿһ¸öÄÚ´æ²Ù×÷£¬¶¼¿ÉÄÜÊÇÒ»¸öDZÔÚµÄÀס£Õâ¿É²»ÊÇÔì×÷½¹ÂÇ£¬ÕâÊÇѪÁÜÁܵĽÌѵ¶Ñ³öÀ´µÄ¾Ñé¡£
»»¸ö½Ç¶È¿´£¬´Ë¿Ì¸÷Ðи÷Òµ¶¼ÔÚ¸ãÊý×Ö»¯£¬ÄãµÄ´úÂë¿ÉÄܾÍÊÇijÁ¾ÖÇÄÜÆû³µ¡¢Ä³¸öÒ½ÁÆÉ豸ÀïµÄÒ»Óײ¿ÃÅ¡£Ò»¸öÒç³öµ¼ÖÂϵͳʧÁ飬ÕâÔðÈΣ¬Ëµ£µÃÆð£¿ËùÒÔ£¬°Ñ»ù´¡´òÀΣ¬°ÑÒç³öÕâ¸ö¡°Ó×¹í¡±ÖÎס£¬ÊÇÄãд³ö¿¿µÃס´úÂëµÄµÚÒ»²½¡£
ËÄ¡¢±ð»Å£¡ÊÖ°ÑÊÖ½ÌÄã·ÀסÒç³öÈý°å¸«
·Àí¶®ÁË£¬°¸Àý¿´ÁË£¬ÄÚÐÄÓеãÊýÁË¡£Äǵ½µ×¸ÃÕ¦°ì£¿¼ÇסÏÂÃæÕ⼸¸öʵ²Ù²½Ö裬ÄÜÖúÄã±Ü¿ª90%µÄ¿Ó¡£
*
µÚÒ»°å¸«£ºÓá°°²È«¡±µÄº¯Êý
±ðÔÙËÀ¿Ä `strcpy`£¬ `sprintf` ÕâЩÀϹŶÁË¡£C˵»°À¶àÓÃËüÃǵݲȫ°æ±¾£¬ºÃ±È `strncpy`£¬ `snprintf`¡£ÕâЩº¯Êý¶àÒ»¸ö²ÎÊý£¬ÈÃÄãÃ÷ȷ֪ͨËü£º¡°×î¶à¾Í copy Õâô¶à£¬±ð³¬ÁË£¡¡± ¾ÍÕâôµ¥ÖðÒ»²½£¬³ÉЧÁ¢¸Í¼ûÓ°¡£
*
µÚ¶þ°å¸«£ºÑø³É¡°²é³¡±µÄ¼¡ÈâÓ°Ïó
ÿ´Î´¦ÖÃÓû§ÊäÈ룬»òÕß²Ù×÷Êý×é¡¢ÄÚ´æÖ®Ç°£¬ÄÚÐÄĬÏëÈý±é£º¡°²é³³¤¶ÈÁËÂ𣿡±¡£ºÃ±È£¬´ÓÍøÂç½Ó¹ÜÊý¾Ý£¬ÏÈÅжÏÊý¾Ý°ü³¤¶ÈºÏ²»ºÏ·¨£»´ÓÊý¾Ý¿â¶Á×Ö·û´®£¬ÏÈ¿´¿´Ëü»á²»»á³¬¹ýÄã³ï±¸ºÃµÄ»º³åÇø¡£Õâ¸öϰ¹ß£¬¼ÛÖµÁîæÂ¡£
*
µÚÈý°å¸«£ºÈù¤¾ßÖúÄ㡰ɨÀס±
´Ë¿ÌÓкöà׳´óµÄ¹¤¾ßÄܹ»×Ô¶¯»¯²é³´úÂë¡£ºÃ±È¾²Ì¬·ÖÎö¹¤¾ß£¨Ïñ SonarQube, Coverity£©£¬ËüÔÚÄã²»ÔËÐдúÂëµÄʱ³½¾ÍÄܾ¾³öDZÔÚµÄÒç³ö·çÏÕ¡£»¹Óж¯Ì¬·ÖÎö¹¤¾ß£¨Ïñ Valgrind£©£¬ÔËÐÐʱÖúÄã¼à¿ØÄÚ´æ²Ù×÷¡£ÉÆÓù¤¾ß£¬±ð¸ú×Ô¼ºµÄÍ··¢¹ý²»È¥¡£ Õâ¾ÍÏñÄãдÎÄÕÂÓÃÆ´Ð´²é³£¬Ò»¸ö·Àí¡£
ËµÕæ»°£¬·ÀÒç³öÕâ¸öÊ£¬Ã»É¶Éîåä·¨ÃÅ£¬Ö÷Ìâ¾ÍÊÇ ¡°Ó×ÐÄ¡±ºÍ¡°¹æ·¶¡±¡£°ÑËüÔì³ÉÄãд´úÂëʱµÄ±¾ÄÜ·´Ó³£¬Äã¾Í³ÉÁË¡£ÎÒ֪·£¬´Ë¿Ì¿ª·¢½ÚÅĿ죬¸÷È˶¼Ïë¡°»ð¿ì¡±£¬Ïë¡°¼±¾çµü´ú¡±¡£µ«»ù´¡µÄ°²È«·ÀÏßÒªÊÇ¿åÁË£¬Â¥¸ÇµÃÔÙ¿ìÒ²µÃËú£¬Õâ¸ö¡°ËɳڸÓ×±ÔÛÃǿɲ»ÄÜÒª¡£
×îºóÁĵãÓ×ÎÒ¼û½â¡£¸ÉÁËÕâô¶àÄ꣬ÎÒ·¢ÏÖ¼¼ÊõȦÓиö¹Ö¾°Ï󣺸÷ÈËÈÈÖÔÓÚ»áÉ̸÷Àà±ðÖ¿ò¼Ü¡¢¸ß¶Ë¼Ü¹¹£¬Õ⵱Ȼû´í¡£µ«¶ÔÓÚÒç³ö¡¢¿ÕÖ¸ÕëÕâÀà¡°¹Åµä¡±ÎÊÌ⣬·´¶ø¸Ð´¥Ì«»ù´¡£¬²»Ð¼Ò»¹Ë¡£Á˾ÖÄØ£¿ÏîÄ¿³öÎÊÌ⣬һ²é¸ùÒò£¬ÍùÍù¾ÍÊÇÕâЩ¡°»ù´¡¡±Ã»´òºÃ¡£
°Ñ OVERFLOW ¸ãÁìÂÔ£¬ÐÔÖÊÉÏÊÇÔÚÔì¾ÍÒ»ÖÖ¡°Ììǵ¸Ó×±ºÍ¡°¾´Î·ÐÄ¡±¡ª¡ª¶Ôϵͳ×ÊÔ´µÄÌìǵ¸Ð£¬¶Ô´úÂë²»±äÐԵľ´Î·ÐÄ¡£ÕâÍæÒâ±ÈÄã¶à»á¼¸¸öÊ¢ÐÐÓï³ÁÒª¶àÁË¡£ÔÚ2026Ä꣬ÉõÖÁ¸üÔ¶µÄ½«À´£¬ÎÒ¸Ò˵£¬Äܰѻù´¡´òÀΡ¢Ð´³ö׳ʵ´úÂëµÄ·¨Ê½Ô±£¬»áÔ½À´Ô½¡°³ÔÏ㡱¡£ÓÉÓÚÕâÖ±½Ó¾ö¶¨Á˲úÆ·µÄ²»±äÐԺ͹«Ë¾µÄ¿Ú±®¡£Õâʶù£¬ÖµµÃÄ㻨¹¦·òÕå×Ã͸¡£