Fossil SCM
Found the same misuse of memcmp() in the "stash" subcommand matcher.
Commit
2a8551762dba4854df16a1e17c76fb6a1ff4fd89be324a76fc89e94236eb7f09
Parent
182cfa1b1d62b80…
1 file changed
+13
-13
+13
-13
| --- src/stash.c | ||
| +++ src/stash.c | ||
| @@ -569,11 +569,11 @@ | ||
| 569 | 569 | zCmd = "save"; |
| 570 | 570 | }else{ |
| 571 | 571 | zCmd = g.argv[2]; |
| 572 | 572 | } |
| 573 | 573 | nCmd = strlen(zCmd); |
| 574 | - if( memcmp(zCmd, "save", nCmd)==0 ){ | |
| 574 | + if( strncmp(zCmd, "save", nCmd)==0 ){ | |
| 575 | 575 | if( unsaved_changes(0)==0 ){ |
| 576 | 576 | fossil_fatal("nothing to stash"); |
| 577 | 577 | } |
| 578 | 578 | stashid = stash_create(); |
| 579 | 579 | undo_disable(); |
| @@ -600,14 +600,14 @@ | ||
| 600 | 600 | g.argv[1] = "revert"; |
| 601 | 601 | revert_cmd(); |
| 602 | 602 | fossil_print("stash %d saved\n", stashid); |
| 603 | 603 | return; |
| 604 | 604 | }else |
| 605 | - if( memcmp(zCmd, "snapshot", nCmd)==0 ){ | |
| 605 | + if( strncmp(zCmd, "snapshot", nCmd)==0 ){ | |
| 606 | 606 | stash_create(); |
| 607 | 607 | }else |
| 608 | - if( memcmp(zCmd, "list", nCmd)==0 || memcmp(zCmd, "ls", nCmd)==0 ){ | |
| 608 | + if( strncmp(zCmd, "list", nCmd)==0 || strncmp(zCmd, "ls", nCmd)==0 ){ | |
| 609 | 609 | Stmt q, q2; |
| 610 | 610 | int n = 0, width; |
| 611 | 611 | int verboseFlag = find_option("verbose","v",0)!=0; |
| 612 | 612 | const char *zWidth = find_option("width","W",1); |
| 613 | 613 | |
| @@ -667,11 +667,11 @@ | ||
| 667 | 667 | } |
| 668 | 668 | db_finalize(&q); |
| 669 | 669 | if( verboseFlag ) db_finalize(&q2); |
| 670 | 670 | if( n==0 ) fossil_print("empty stash\n"); |
| 671 | 671 | }else |
| 672 | - if( memcmp(zCmd, "drop", nCmd)==0 || memcmp(zCmd, "rm", nCmd)==0 ){ | |
| 672 | + if( strncmp(zCmd, "drop", nCmd)==0 || strncmp(zCmd, "rm", nCmd)==0 ){ | |
| 673 | 673 | int allFlag = find_option("all", "a", 0)!=0; |
| 674 | 674 | if( allFlag ){ |
| 675 | 675 | Blob ans; |
| 676 | 676 | char cReply; |
| 677 | 677 | prompt_user("This action is not undoable. Continue (y/N)? ", &ans); |
| @@ -693,11 +693,11 @@ | ||
| 693 | 693 | undo_save_stash(0); |
| 694 | 694 | stash_drop(stashid); |
| 695 | 695 | undo_finish(); |
| 696 | 696 | } |
| 697 | 697 | }else |
| 698 | - if( memcmp(zCmd, "pop", nCmd)==0 || memcmp(zCmd, "apply", nCmd)==0 ){ | |
| 698 | + if( strncmp(zCmd, "pop", nCmd)==0 || strncmp(zCmd, "apply", nCmd)==0 ){ | |
| 699 | 699 | char *zCom = 0, *zDate = 0, *zHash = 0; |
| 700 | 700 | int popped = *zCmd=='p'; |
| 701 | 701 | if( popped ){ |
| 702 | 702 | if( g.argc>3 ) usage("pop"); |
| 703 | 703 | stashid = stash_get_id(0); |
| @@ -722,11 +722,11 @@ | ||
| 722 | 722 | fossil_free(zDate); |
| 723 | 723 | fossil_free(zHash); |
| 724 | 724 | undo_finish(); |
| 725 | 725 | if( popped ) stash_drop(stashid); |
| 726 | 726 | }else |
| 727 | - if( memcmp(zCmd, "goto", nCmd)==0 ){ | |
| 727 | + if( strncmp(zCmd, "goto", nCmd)==0 ){ | |
| 728 | 728 | int nConflict; |
| 729 | 729 | int vid; |
| 730 | 730 | if( g.argc>4 ) usage("apply STASHID"); |
| 731 | 731 | stashid = stash_get_id(g.argc==4 ? g.argv[3] : 0); |
| 732 | 732 | undo_begin(); |
| @@ -737,16 +737,16 @@ | ||
| 737 | 737 | db_multi_exec("UPDATE vfile SET mtime=0 WHERE pathname IN " |
| 738 | 738 | "(SELECT origname FROM stashfile WHERE stashid=%d)", |
| 739 | 739 | stashid); |
| 740 | 740 | undo_finish(); |
| 741 | 741 | }else |
| 742 | - if( memcmp(zCmd, "diff", nCmd)==0 | |
| 743 | - || memcmp(zCmd, "gdiff", nCmd)==0 | |
| 744 | - || memcmp(zCmd, "show", nCmd)==0 | |
| 745 | - || memcmp(zCmd, "gshow", nCmd)==0 | |
| 746 | - || memcmp(zCmd, "cat", nCmd)==0 | |
| 747 | - || memcmp(zCmd, "gcat", nCmd)==0 | |
| 742 | + if( strncmp(zCmd, "diff", nCmd)==0 | |
| 743 | + || strncmp(zCmd, "gdiff", nCmd)==0 | |
| 744 | + || strncmp(zCmd, "show", nCmd)==0 | |
| 745 | + || strncmp(zCmd, "gshow", nCmd)==0 | |
| 746 | + || strncmp(zCmd, "cat", nCmd)==0 | |
| 747 | + || strncmp(zCmd, "gcat", nCmd)==0 | |
| 748 | 748 | ){ |
| 749 | 749 | int fBaseline = 0; |
| 750 | 750 | DiffConfig DCfg; |
| 751 | 751 | |
| 752 | 752 | if( strstr(zCmd,"show")!=0 || strstr(zCmd,"cat")!=0 ){ |
| @@ -759,11 +759,11 @@ | ||
| 759 | 759 | } |
| 760 | 760 | diff_options(&DCfg, zCmd[0]=='g', 0); |
| 761 | 761 | stashid = stash_get_id(g.argc==4 ? g.argv[3] : 0); |
| 762 | 762 | stash_diff(stashid, fBaseline, &DCfg); |
| 763 | 763 | }else |
| 764 | - if( memcmp(zCmd, "help", nCmd)==0 ){ | |
| 764 | + if( strncmp(zCmd, "help", nCmd)==0 ){ | |
| 765 | 765 | g.argv[1] = "help"; |
| 766 | 766 | g.argv[2] = "stash"; |
| 767 | 767 | g.argc = 3; |
| 768 | 768 | help_cmd(); |
| 769 | 769 | }else |
| 770 | 770 |
| --- src/stash.c | |
| +++ src/stash.c | |
| @@ -569,11 +569,11 @@ | |
| 569 | zCmd = "save"; |
| 570 | }else{ |
| 571 | zCmd = g.argv[2]; |
| 572 | } |
| 573 | nCmd = strlen(zCmd); |
| 574 | if( memcmp(zCmd, "save", nCmd)==0 ){ |
| 575 | if( unsaved_changes(0)==0 ){ |
| 576 | fossil_fatal("nothing to stash"); |
| 577 | } |
| 578 | stashid = stash_create(); |
| 579 | undo_disable(); |
| @@ -600,14 +600,14 @@ | |
| 600 | g.argv[1] = "revert"; |
| 601 | revert_cmd(); |
| 602 | fossil_print("stash %d saved\n", stashid); |
| 603 | return; |
| 604 | }else |
| 605 | if( memcmp(zCmd, "snapshot", nCmd)==0 ){ |
| 606 | stash_create(); |
| 607 | }else |
| 608 | if( memcmp(zCmd, "list", nCmd)==0 || memcmp(zCmd, "ls", nCmd)==0 ){ |
| 609 | Stmt q, q2; |
| 610 | int n = 0, width; |
| 611 | int verboseFlag = find_option("verbose","v",0)!=0; |
| 612 | const char *zWidth = find_option("width","W",1); |
| 613 | |
| @@ -667,11 +667,11 @@ | |
| 667 | } |
| 668 | db_finalize(&q); |
| 669 | if( verboseFlag ) db_finalize(&q2); |
| 670 | if( n==0 ) fossil_print("empty stash\n"); |
| 671 | }else |
| 672 | if( memcmp(zCmd, "drop", nCmd)==0 || memcmp(zCmd, "rm", nCmd)==0 ){ |
| 673 | int allFlag = find_option("all", "a", 0)!=0; |
| 674 | if( allFlag ){ |
| 675 | Blob ans; |
| 676 | char cReply; |
| 677 | prompt_user("This action is not undoable. Continue (y/N)? ", &ans); |
| @@ -693,11 +693,11 @@ | |
| 693 | undo_save_stash(0); |
| 694 | stash_drop(stashid); |
| 695 | undo_finish(); |
| 696 | } |
| 697 | }else |
| 698 | if( memcmp(zCmd, "pop", nCmd)==0 || memcmp(zCmd, "apply", nCmd)==0 ){ |
| 699 | char *zCom = 0, *zDate = 0, *zHash = 0; |
| 700 | int popped = *zCmd=='p'; |
| 701 | if( popped ){ |
| 702 | if( g.argc>3 ) usage("pop"); |
| 703 | stashid = stash_get_id(0); |
| @@ -722,11 +722,11 @@ | |
| 722 | fossil_free(zDate); |
| 723 | fossil_free(zHash); |
| 724 | undo_finish(); |
| 725 | if( popped ) stash_drop(stashid); |
| 726 | }else |
| 727 | if( memcmp(zCmd, "goto", nCmd)==0 ){ |
| 728 | int nConflict; |
| 729 | int vid; |
| 730 | if( g.argc>4 ) usage("apply STASHID"); |
| 731 | stashid = stash_get_id(g.argc==4 ? g.argv[3] : 0); |
| 732 | undo_begin(); |
| @@ -737,16 +737,16 @@ | |
| 737 | db_multi_exec("UPDATE vfile SET mtime=0 WHERE pathname IN " |
| 738 | "(SELECT origname FROM stashfile WHERE stashid=%d)", |
| 739 | stashid); |
| 740 | undo_finish(); |
| 741 | }else |
| 742 | if( memcmp(zCmd, "diff", nCmd)==0 |
| 743 | || memcmp(zCmd, "gdiff", nCmd)==0 |
| 744 | || memcmp(zCmd, "show", nCmd)==0 |
| 745 | || memcmp(zCmd, "gshow", nCmd)==0 |
| 746 | || memcmp(zCmd, "cat", nCmd)==0 |
| 747 | || memcmp(zCmd, "gcat", nCmd)==0 |
| 748 | ){ |
| 749 | int fBaseline = 0; |
| 750 | DiffConfig DCfg; |
| 751 | |
| 752 | if( strstr(zCmd,"show")!=0 || strstr(zCmd,"cat")!=0 ){ |
| @@ -759,11 +759,11 @@ | |
| 759 | } |
| 760 | diff_options(&DCfg, zCmd[0]=='g', 0); |
| 761 | stashid = stash_get_id(g.argc==4 ? g.argv[3] : 0); |
| 762 | stash_diff(stashid, fBaseline, &DCfg); |
| 763 | }else |
| 764 | if( memcmp(zCmd, "help", nCmd)==0 ){ |
| 765 | g.argv[1] = "help"; |
| 766 | g.argv[2] = "stash"; |
| 767 | g.argc = 3; |
| 768 | help_cmd(); |
| 769 | }else |
| 770 |
| --- src/stash.c | |
| +++ src/stash.c | |
| @@ -569,11 +569,11 @@ | |
| 569 | zCmd = "save"; |
| 570 | }else{ |
| 571 | zCmd = g.argv[2]; |
| 572 | } |
| 573 | nCmd = strlen(zCmd); |
| 574 | if( strncmp(zCmd, "save", nCmd)==0 ){ |
| 575 | if( unsaved_changes(0)==0 ){ |
| 576 | fossil_fatal("nothing to stash"); |
| 577 | } |
| 578 | stashid = stash_create(); |
| 579 | undo_disable(); |
| @@ -600,14 +600,14 @@ | |
| 600 | g.argv[1] = "revert"; |
| 601 | revert_cmd(); |
| 602 | fossil_print("stash %d saved\n", stashid); |
| 603 | return; |
| 604 | }else |
| 605 | if( strncmp(zCmd, "snapshot", nCmd)==0 ){ |
| 606 | stash_create(); |
| 607 | }else |
| 608 | if( strncmp(zCmd, "list", nCmd)==0 || strncmp(zCmd, "ls", nCmd)==0 ){ |
| 609 | Stmt q, q2; |
| 610 | int n = 0, width; |
| 611 | int verboseFlag = find_option("verbose","v",0)!=0; |
| 612 | const char *zWidth = find_option("width","W",1); |
| 613 | |
| @@ -667,11 +667,11 @@ | |
| 667 | } |
| 668 | db_finalize(&q); |
| 669 | if( verboseFlag ) db_finalize(&q2); |
| 670 | if( n==0 ) fossil_print("empty stash\n"); |
| 671 | }else |
| 672 | if( strncmp(zCmd, "drop", nCmd)==0 || strncmp(zCmd, "rm", nCmd)==0 ){ |
| 673 | int allFlag = find_option("all", "a", 0)!=0; |
| 674 | if( allFlag ){ |
| 675 | Blob ans; |
| 676 | char cReply; |
| 677 | prompt_user("This action is not undoable. Continue (y/N)? ", &ans); |
| @@ -693,11 +693,11 @@ | |
| 693 | undo_save_stash(0); |
| 694 | stash_drop(stashid); |
| 695 | undo_finish(); |
| 696 | } |
| 697 | }else |
| 698 | if( strncmp(zCmd, "pop", nCmd)==0 || strncmp(zCmd, "apply", nCmd)==0 ){ |
| 699 | char *zCom = 0, *zDate = 0, *zHash = 0; |
| 700 | int popped = *zCmd=='p'; |
| 701 | if( popped ){ |
| 702 | if( g.argc>3 ) usage("pop"); |
| 703 | stashid = stash_get_id(0); |
| @@ -722,11 +722,11 @@ | |
| 722 | fossil_free(zDate); |
| 723 | fossil_free(zHash); |
| 724 | undo_finish(); |
| 725 | if( popped ) stash_drop(stashid); |
| 726 | }else |
| 727 | if( strncmp(zCmd, "goto", nCmd)==0 ){ |
| 728 | int nConflict; |
| 729 | int vid; |
| 730 | if( g.argc>4 ) usage("apply STASHID"); |
| 731 | stashid = stash_get_id(g.argc==4 ? g.argv[3] : 0); |
| 732 | undo_begin(); |
| @@ -737,16 +737,16 @@ | |
| 737 | db_multi_exec("UPDATE vfile SET mtime=0 WHERE pathname IN " |
| 738 | "(SELECT origname FROM stashfile WHERE stashid=%d)", |
| 739 | stashid); |
| 740 | undo_finish(); |
| 741 | }else |
| 742 | if( strncmp(zCmd, "diff", nCmd)==0 |
| 743 | || strncmp(zCmd, "gdiff", nCmd)==0 |
| 744 | || strncmp(zCmd, "show", nCmd)==0 |
| 745 | || strncmp(zCmd, "gshow", nCmd)==0 |
| 746 | || strncmp(zCmd, "cat", nCmd)==0 |
| 747 | || strncmp(zCmd, "gcat", nCmd)==0 |
| 748 | ){ |
| 749 | int fBaseline = 0; |
| 750 | DiffConfig DCfg; |
| 751 | |
| 752 | if( strstr(zCmd,"show")!=0 || strstr(zCmd,"cat")!=0 ){ |
| @@ -759,11 +759,11 @@ | |
| 759 | } |
| 760 | diff_options(&DCfg, zCmd[0]=='g', 0); |
| 761 | stashid = stash_get_id(g.argc==4 ? g.argv[3] : 0); |
| 762 | stash_diff(stashid, fBaseline, &DCfg); |
| 763 | }else |
| 764 | if( strncmp(zCmd, "help", nCmd)==0 ){ |
| 765 | g.argv[1] = "help"; |
| 766 | g.argv[2] = "stash"; |
| 767 | g.argc = 3; |
| 768 | help_cmd(); |
| 769 | }else |
| 770 |