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 :

Reply via email to