https://gcc.gnu.org/g:592daa395c512e83eb5018b6877c3888d74ff937
commit r17-2327-g592daa395c512e83eb5018b6877c3888d74ff937 Author: Robert Dubner <[email protected]> Date: Fri Jul 10 23:48:32 2026 -0400 cobol: Use strncpy properly. gcc/cobol/ChangeLog: * copybook.h (class copybook_t): Mollify cppcheck. * lexio.h (struct filespan_t): Likewise. * symbols.h (symbol_typedef): Add declaration. libgcobol/ChangeLog: * charmaps.cc (helpful_iconv_open): Use strncpy() properly. (char_from_figconst): Initialize return value. gcc/testsuite/ChangeLog: * cobol.dg/group2/BINARY_and_COMP-5.cob: Removed. * cobol.dg/group2/BINARY_and_COMP-5.out: Removed. * cobol.dg/group2/Non-numeric_data_in_numeric_items__1_.cob: Removed. * cobol.dg/group2/Non-numeric_data_in_numeric_items__1_.out: Removed. Diff: --- gcc/cobol/copybook.h | 3 +- gcc/cobol/lexio.h | 4 +- gcc/cobol/symbols.h | 1 + .../cobol.dg/group2/BINARY_and_COMP-5.cob | 158 --------------------- .../cobol.dg/group2/BINARY_and_COMP-5.out | 35 ----- .../Non-numeric_data_in_numeric_items__1_.cob | 27 ---- .../Non-numeric_data_in_numeric_items__1_.out | 2 - libgcobol/charmaps.cc | 6 +- 8 files changed, 8 insertions(+), 228 deletions(-) diff --git a/gcc/cobol/copybook.h b/gcc/cobol/copybook.h index 84b0cc63ff9b..93c87b70ea83 100644 --- a/gcc/cobol/copybook.h +++ b/gcc/cobol/copybook.h @@ -197,7 +197,8 @@ class copybook_t { book.clear(); this->source(loc, name); - for( auto dir : directories ) { + for( const auto &dir : directories ) { + // cppcheck-suppress useStlAlgorithm if( (fd = book.open_file(dir, book.literally.source)) != -1 ) break; } return fd; diff --git a/gcc/cobol/lexio.h b/gcc/cobol/lexio.h index 222a831fe6d4..b648997b35c4 100644 --- a/gcc/cobol/lexio.h +++ b/gcc/cobol/lexio.h @@ -168,9 +168,9 @@ struct filespan_t : public bytespan_t { if( nul != eol ) { if( std::any_of( nul, eodata, []( char ch ) { return ch != '\0'; } ) ) { - int icol = nul - cur; + int icol2 = nul - cur; fprintf(stderr, "%s:%d:%d: error: NUL character detected in input\n%*s\n", - cobol_filename(), int(iline + 1), ++icol, + cobol_filename(), int(iline + 1), ++icol2, int(eol - cur), cur); parse_error_inc(); std::replace(nul, eol, '\0', SPACE); diff --git a/gcc/cobol/symbols.h b/gcc/cobol/symbols.h index fe167c90df4a..3744b3a7f616 100644 --- a/gcc/cobol/symbols.h +++ b/gcc/cobol/symbols.h @@ -2847,6 +2847,7 @@ cbl_namelist_t teed_up_names(); size_t end_of_group( size_t igroup ); +symbol_elem_t * symbol_typedef( size_t program, std::list<const char *> names ); symbol_elem_t * symbol_typedef( size_t program, const char name[] ); symbol_elem_t * symbol_field( size_t program, size_t parent, const char name[] ); cbl_label_t * symbol_label( size_t program, cbl_label_type_t type, diff --git a/gcc/testsuite/cobol.dg/group2/BINARY_and_COMP-5.cob b/gcc/testsuite/cobol.dg/group2/BINARY_and_COMP-5.cob deleted file mode 100644 index c1e488a62279..000000000000 --- a/gcc/testsuite/cobol.dg/group2/BINARY_and_COMP-5.cob +++ /dev/null @@ -1,158 +0,0 @@ - *> { dg-do run } - *> { dg-output-file "group2/BINARY_and_COMP-5.out" } - identification division. - program-id. prog. - procedure division. - call "prog1" - call "prog2" - goback. - end program prog. - - identification division. - program-id. prog1. - data division. - working-storage section. - 01. - 02 var-binary binary pic 9v9(10) . - 02 var-binaryp redefines var-binary pointer. - 02 var-comp comp pic 9v9(10) . - 02 var-compp redefines var-comp pointer. - 02 var-compu computational pic 9v9(10) . - 02 var-compup redefines var-compu pointer. - 02 var-comp4 comp-4 pic 9v9(10) . - 02 var-comp4p redefines var-comp4 pointer. - 02 var-compu4 computational-4 pic 9v9(10) . - 02 var-compu4p redefines var-compu4 pointer. - - 02 var-comp5 comp-5 pic 9v9(10) . - 02 var-comp5p redefines var-comp5 pointer. - 02 var-compu5 computational-5 pic 9v9(10) . - 02 var-compu5p redefines var-compu5 pointer. - - 02 var-sbinary binary pic s9v9(10) . - 02 var-sbinaryp redefines var-sbinary pointer. - 02 var-scomp comp pic s9v9(10) . - 02 var-scompp redefines var-scomp pointer. - 02 var-scompu computational pic s9v9(10) . - 02 var-scompup redefines var-scompu pointer. - 02 var-scomp4 comp-4 pic s9v9(10) . - 02 var-scomp4p redefines var-scomp4 pointer. - 02 var-scompu4 computational-4 pic s9v9(10) . - 02 var-scompu4p redefines var-scompu4 pointer. - - 02 var-scomp5 comp-5 pic s9v9(10) . - 02 var-scomp5p redefines var-scomp5 pointer. - 02 var-scompu5 computational-5 pic s9v9(10) . - 02 var-scompu5p redefines var-scompu5 pointer. - procedure division. - move 0.0001193046 to var-binary var-comp var-compu - var-comp4 var-compu4 var-comp5 - var-compu5 - display " " var-binary " " var-comp " " var-compu " " - var-comp4 " " var-compu4 " " - var-comp5 " " var-compu5 - move 0.0001193046 to var-sbinary var-scomp var-scompu - var-scomp4 var-scompu4 var-scomp5 - var-scompu5 - display var-sbinary " " var-scomp " " var-scompu " " - var-scomp4 " " var-scompu4 " " - var-scomp5 " " var-scompu5 - move -0.0001193046 to var-sbinary var-scomp var-scompu - var-scomp4 var-scompu4 var-scomp5 - var-scompu5 - display var-sbinary " " var-scomp " " var-scompu " " - var-scomp4 " " var-scompu4 " " - var-scomp5 " " var-scompu5 - display var-binaryp - display var-compp - display var-compup - display var-comp4p - display var-compu4p - display var-comp5p - display var-compu5p - - display var-sbinaryp - display var-scompp - display var-scompup - display var-scomp4p - display var-scompu4p - display var-scomp5p - display var-scompu5p - - goback. - end program prog1. - - identification division. - program-id. prog2. - data division. - working-storage section. - 01. - 02 var-binary pic 9v9(10) binary . - 02 var-binaryp redefines var-binary pointer. - 02 var-comp pic 9v9(10) comp . - 02 var-compp redefines var-comp pointer. - 02 var-compu pic 9v9(10) computational . - 02 var-compup redefines var-compu pointer. - 02 var-comp4 pic 9v9(10) comp-4 . - 02 var-comp4p redefines var-comp4 pointer. - 02 var-compu4 pic 9v9(10) computational-4 . - 02 var-compu4p redefines var-compu4 pointer. - - 02 var-comp5 pic 9v9(10) comp-5 . - 02 var-comp5p redefines var-comp5 pointer. - 02 var-compu5 pic 9v9(10) computational-5 . - 02 var-compu5p redefines var-compu5 pointer. - - 02 var-sbinary pic s9v9(10) binary . - 02 var-sbinaryp redefines var-sbinary pointer. - 02 var-scomp pic s9v9(10) comp . - 02 var-scompp redefines var-scomp pointer. - 02 var-scompu pic s9v9(10) computational . - 02 var-scompup redefines var-scompu pointer. - 02 var-scomp4 pic s9v9(10) comp-4 . - 02 var-scomp4p redefines var-scomp4 pointer. - 02 var-scompu4 pic s9v9(10) computational-4 . - 02 var-scompu4p redefines var-scompu4 pointer. - - 02 var-scomp5 pic s9v9(10) comp-5 . - 02 var-scomp5p redefines var-scomp5 pointer. - 02 var-scompu5 pic s9v9(10) computational-5 . - 02 var-scompu5p redefines var-scompu5 pointer. - procedure division. - move 0.0001193046 to var-binary var-comp var-compu - var-comp4 var-compu4 var-comp5 - var-compu5 - display " " var-binary " " var-comp " " var-compu " " - var-comp4 " " var-compu4 " " - var-comp5 " " var-compu5 - move 0.0001193046 to var-sbinary var-scomp var-scompu - var-scomp4 var-scompu4 var-scomp5 - var-scompu5 - display var-sbinary " " var-scomp " " var-scompu " " - var-scomp4 " " var-scompu4 " " - var-scomp5 " " var-scompu5 - move -0.0001193046 to var-sbinary var-scomp var-scompu - var-scomp4 var-scompu4 var-scomp5 - var-scompu5 - display var-sbinary " " var-scomp " " var-scompu " " - var-scomp4 " " var-scompu4 " " - var-scomp5 " " var-scompu5 - display var-binaryp - display var-compp - display var-compup - display var-comp4p - display var-compu4p - display var-comp5p - display var-compu5p - - display var-sbinaryp - display var-scompp - display var-scompup - display var-scomp4p - display var-scompu4p - display var-scomp5p - display var-scompu5p - - goback. - end program prog2. - diff --git a/gcc/testsuite/cobol.dg/group2/BINARY_and_COMP-5.out b/gcc/testsuite/cobol.dg/group2/BINARY_and_COMP-5.out deleted file mode 100644 index 3fd09c41c30d..000000000000 --- a/gcc/testsuite/cobol.dg/group2/BINARY_and_COMP-5.out +++ /dev/null @@ -1,35 +0,0 @@ - 0.0001193046 0.0001193046 0.0001193046 0.0001193046 0.0001193046 0.0001193046 0.0001193046 -+0.0001193046 +0.0001193046 +0.0001193046 +0.0001193046 +0.0001193046 +0.0001193046 +0.0001193046 --0.0001193046 -0.0001193046 -0.0001193046 -0.0001193046 -0.0001193046 -0.0001193046 -0.0001193046 -0x5634120000000000 -0x5634120000000000 -0x5634120000000000 -0x5634120000000000 -0x5634120000000000 -0x0000000000123456 -0x0000000000123456 -0xaacbedffffffffff -0xaacbedffffffffff -0xaacbedffffffffff -0xaacbedffffffffff -0xaacbedffffffffff -0xffffffffffedcbaa -0xffffffffffedcbaa - 0.0001193046 0.0001193046 0.0001193046 0.0001193046 0.0001193046 0.0001193046 0.0001193046 -+0.0001193046 +0.0001193046 +0.0001193046 +0.0001193046 +0.0001193046 +0.0001193046 +0.0001193046 --0.0001193046 -0.0001193046 -0.0001193046 -0.0001193046 -0.0001193046 -0.0001193046 -0.0001193046 -0x5634120000000000 -0x5634120000000000 -0x5634120000000000 -0x5634120000000000 -0x5634120000000000 -0x0000000000123456 -0x0000000000123456 -0xaacbedffffffffff -0xaacbedffffffffff -0xaacbedffffffffff -0xaacbedffffffffff -0xaacbedffffffffff -0xffffffffffedcbaa -0xffffffffffedcbaa - diff --git a/gcc/testsuite/cobol.dg/group2/Non-numeric_data_in_numeric_items__1_.cob b/gcc/testsuite/cobol.dg/group2/Non-numeric_data_in_numeric_items__1_.cob deleted file mode 100644 index 6b38f79f3886..000000000000 --- a/gcc/testsuite/cobol.dg/group2/Non-numeric_data_in_numeric_items__1_.cob +++ /dev/null @@ -1,27 +0,0 @@ - *> { dg-do run } - *> { dg-output-file "group2/Non-numeric_data_in_numeric_items__1_.out" } - - IDENTIFICATION DIVISION. - PROGRAM-ID. prog. - DATA DIVISION. - WORKING-STORAGE SECTION. - 01 X. - 03 X-NUM PIC 9(06) VALUE 123. - 77 NUM PIC 9(06). - PROCEDURE DIVISION. - MOVE x"0000" TO X (2:2) - IF X-NUM NUMERIC - DISPLAY "low-value is numeric" UPON SYSERR - END-DISPLAY - END-IF - MOVE x"01" TO X (3:1) - IF X-NUM NUMERIC - DISPLAY "SOH is numeric" UPON SYSERR - END-DISPLAY - END-IF - MOVE X-NUM TO NUM - DISPLAY "test over" - END-DISPLAY - * - GOBACK. - diff --git a/gcc/testsuite/cobol.dg/group2/Non-numeric_data_in_numeric_items__1_.out b/gcc/testsuite/cobol.dg/group2/Non-numeric_data_in_numeric_items__1_.out deleted file mode 100644 index ac61d84c6f55..000000000000 --- a/gcc/testsuite/cobol.dg/group2/Non-numeric_data_in_numeric_items__1_.out +++ /dev/null @@ -1,2 +0,0 @@ -test over - diff --git a/libgcobol/charmaps.cc b/libgcobol/charmaps.cc index 1c70afc0fc94..1fdb9997c097 100644 --- a/libgcobol/charmaps.cc +++ b/libgcobol/charmaps.cc @@ -1863,8 +1863,8 @@ helpful_iconv_open(const char *tocode, const char *fromcode) char ach_to[32]; char ach_from[32]; - strncpy(ach_to, tocode, sizeof(ach_to)); - strncpy(ach_from, fromcode, sizeof(ach_from)); + strncpy(ach_to, tocode, sizeof(ach_to)-1); + strncpy(ach_from, fromcode, sizeof(ach_from)-1); fixcode(ach_to, sizeof(ach_to)); fixcode(ach_from, sizeof(ach_from)); @@ -1877,7 +1877,7 @@ helpful_iconv_open(const char *tocode, const char *fromcode) char char_from_figconst(cbl_figconst_t figconst) { - char retval; + char retval = 0; switch(figconst) { case normal_value_e :
