Covscan found a large number of issues in diffutils-3.6. The Coverity covscan result is attached.

Best Regards,

Than

Error: NO_EFFECT (CWE-398):
diffutils-3.6/lib/anytostr.c:41: unsigned_compare: This less-than-zero 
comparison of an unsigned value is never true. "i < 0U".
#   39|     *p = 0;
#   40|   
#   41|->   if (i < 0)
#   42|       {
#   43|         do

Error: NO_EFFECT (CWE-398):
diffutils-3.6/lib/anytostr.c:41: unsigned_compare: This less-than-zero 
comparison of an unsigned value is never true. "i < 0UL".
#   39|     *p = 0;
#   40|   
#   41|->   if (i < 0)
#   42|       {
#   43|         do

Error: UNINIT (CWE-457):
diffutils-3.6/lib/diffseq.h:377: var_decl: Declaring variable "fxbest" without 
initializer.
diffutils-3.6/lib/diffseq.h:420: uninit_use: Using uninitialized value "fxbest".
#  418|             if ((xlim + ylim) - bxybest < fxybest - (xoff + yoff))
#  419|               {
#  420|->               part->xmid = fxbest;
#  421|                 part->ymid = fxybest - fxbest;
#  422|                 part->lo_minimal = true;

Error: COMPILER_WARNING:
diffutils-3.6/lib/diffseq.h:421:36: warning: 'fxbest' may be used uninitialized 
in this function [-Wmaybe-uninitialized]
#               part->ymid = fxybest - fxbest;
#                            ~~~~~~~~^~~~~~~~
diffutils-3.6/lib/diffseq.h:377:18: note: 'fxbest' was declared here
#           OFFSET fxbest IF_LINT (= 0);
#                  ^~~~~~
#  419|               {
#  420|                 part->xmid = fxbest;
#  421|->               part->ymid = fxybest - fxbest;
#  422|                 part->lo_minimal = true;
#  423|                 part->hi_minimal = false;

Error: UNINIT (CWE-457):
diffutils-3.6/lib/diffseq.h:379: var_decl: Declaring variable "bxbest" without 
initializer.
diffutils-3.6/lib/diffseq.h:427: uninit_use: Using uninitialized value "bxbest".
#  425|             else
#  426|               {
#  427|->               part->xmid = bxbest;
#  428|                 part->ymid = bxybest - bxbest;
#  429|                 part->lo_minimal = false;

Error: COMPILER_WARNING:
diffutils-3.6/src/analyze.c:35: included_from: Included from here.
diffutils-3.6/lib/diffseq.h: scope_hint: In function 'compareseq'
diffutils-3.6/lib/diffseq.h:428:36: warning: 'bxbest' may be used uninitialized 
in this function [-Wmaybe-uninitialized]
#               part->ymid = bxybest - bxbest;
#                            ~~~~~~~~^~~~~~~~
diffutils-3.6/lib/diffseq.h:379:18: note: 'bxbest' was declared here
#           OFFSET bxbest IF_LINT (= 0);
#                  ^~~~~~
#  426|               {
#  427|                 part->xmid = bxbest;
#  428|->               part->ymid = bxybest - bxbest;
#  429|                 part->lo_minimal = false;
#  430|                 part->hi_minimal = true;

Error: DEADCODE (CWE-561):
diffutils-3.6/lib/dirname-lgpl.c:34: assignment: Assigning: "prefix_length" = 
"0UL".
diffutils-3.6/lib/dirname-lgpl.c:38: const: At condition "prefix_length != 
0UL", the value of "prefix_length" must be equal to 0.
diffutils-3.6/lib/dirname-lgpl.c:38: dead_error_condition: The condition 
"prefix_length != 0UL" cannot be true.
diffutils-3.6/lib/dirname-lgpl.c:38: dead_error_line: Execution cannot reach 
the expression "0" inside this statement: "prefix_length += ((prefix_l...".
#   36|   
#   37|     /* Advance prefix_length beyond important leading slashes.  */
#   38|->   prefix_length += (prefix_length != 0
#   39|                       ? (FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE
#   40|                          && ISSLASH (file[prefix_length]))

Error: RESOURCE_LEAK (CWE-772):
diffutils-3.6/lib/freopen-safer.c:42: open_fn: Returning handle opened by 
"open". [Note: The source code implementation of the function has been 
overridden by a user model.]
diffutils-3.6/lib/freopen-safer.c:42: var_assign: Assigning: "value" = handle 
returned from "open("/dev/null", 0)".
diffutils-3.6/lib/freopen-safer.c:52: leaked_handle: Handle variable "value" 
going out of scope leaks the handle.
#   50|         return false;
#   51|       }
#   52|->   return true;
#   53|   }
#   54|   

Error: CLANG_WARNING:
diffutils-3.6/lib/localcharset.c:243:23: warning: Potential leak of memory 
pointed to by 'old_res_ptr'
#                      strcpy (res_ptr + res_size - (l2 + 1) - (l1 + 1), buf1);
#                      ^
diffutils-3.6/lib/localcharset.c:588:7: note: Assuming 'codeset' is not equal 
to NULL
#  if (codeset == NULL)
#      ^~~~~~~~~~~~~~~
diffutils-3.6/lib/localcharset.c:588:3: note: Taking false branch
#  if (codeset == NULL)
#  ^
diffutils-3.6/lib/localcharset.c:593:18: note: Calling 'get_charset_aliases'
#  for (aliases = get_charset_aliases ();
#                 ^~~~~~~~~~~~~~~~~~~~~~
diffutils-3.6/lib/localcharset.c:130:7: note: Assuming 'cp' is equal to NULL
#  if (cp == NULL)
#      ^~~~~~~~~~
diffutils-3.6/lib/localcharset.c:130:3: note: Taking true branch
#  if (cp == NULL)
#  ^
diffutils-3.6/lib/localcharset.c:141:11: note: Assuming 'dir' is not equal to 
NULL
#      if (dir == NULL || dir[0] == '\0')
#          ^~~~~~~~~~~
diffutils-3.6/lib/localcharset.c:141:11: note: Left side of '||' is false
diffutils-3.6/lib/localcharset.c:141:26: note: Assuming the condition is false
#      if (dir == NULL || dir[0] == '\0')
#                         ^~~~~~~~~~~~~~
diffutils-3.6/lib/localcharset.c:141:7: note: Taking false branch
#      if (dir == NULL || dir[0] == '\0')
#      ^
diffutils-3.6/lib/localcharset.c:148:26: note: Assuming 'dir_len' is <= 0
#        int add_slash = (dir_len > 0 && !ISSLASH (dir[dir_len - 1]));
#                         ^~~~~~~~~~~
diffutils-3.6/lib/localcharset.c:148:38: note: Left side of '&&' is false
#        int add_slash = (dir_len > 0 && !ISSLASH (dir[dir_len - 1]));
#                                     ^
diffutils-3.6/lib/localcharset.c:150:13: note: Assuming 'file_name' is not 
equal to NULL
#        if (file_name != NULL)
#            ^~~~~~~~~~~~~~~~~
diffutils-3.6/lib/localcharset.c:150:9: note: Taking true branch
#        if (file_name != NULL)
#        ^
diffutils-3.6/lib/localcharset.c:153:13: note: Taking false branch
#            if (add_slash)
#            ^
diffutils-3.6/lib/localcharset.c:161:7: note: Taking false branch
#      if (file_name == NULL)
#      ^
diffutils-3.6/lib/localcharset.c:177:15: note: Assuming 'fd' is >= 0
#          if (fd < 0)
#              ^~~~~~
diffutils-3.6/lib/localcharset.c:177:11: note: Taking false branch
#          if (fd < 0)
#          ^
diffutils-3.6/lib/localcharset.c:185:19: note: Assuming 'fp' is not equal to 
NULL
#              if (fp == NULL)
#                  ^~~~~~~~~~
diffutils-3.6/lib/localcharset.c:185:15: note: Taking false branch
#              if (fp == NULL)
#              ^
diffutils-3.6/lib/localcharset.c:197:19: note: Loop condition is true.  
Entering loop body
#                  for (;;)
#                  ^
diffutils-3.6/lib/localcharset.c:206:23: note: Taking false branch
#                      if (c == EOF)
#                      ^
diffutils-3.6/lib/localcharset.c:208:27: note: Assuming the condition is false
#                      if (c == '\n' || c == ' ' || c == '\t')
#                          ^~~~~~~~~
diffutils-3.6/lib/localcharset.c:208:27: note: Left side of '||' is false
diffutils-3.6/lib/localcharset.c:208:40: note: Assuming the condition is false
#                      if (c == '\n' || c == ' ' || c == '\t')
#                                       ^~~~~~~~
diffutils-3.6/lib/localcharset.c:208:27: note: Left side of '||' is false
#                      if (c == '\n' || c == ' ' || c == '\t')
#                          ^
diffutils-3.6/lib/localcharset.c:208:52: note: Assuming the condition is false
#                      if (c == '\n' || c == ' ' || c == '\t')
#                                                   ^~~~~~~~~
diffutils-3.6/lib/localcharset.c:208:23: note: Taking false branch
#                      if (c == '\n' || c == ' ' || c == '\t')
#                      ^
diffutils-3.6/lib/localcharset.c:210:27: note: Assuming the condition is false
#                      if (c == '#')
#                          ^~~~~~~~
diffutils-3.6/lib/localcharset.c:210:23: note: Taking false branch
#                      if (c == '#')
#                      ^
diffutils-3.6/lib/localcharset.c:221:27: note: Assuming the condition is false
#                      if (fscanf (fp, "%50s %50s", buf1, buf2) < 2)
#                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diffutils-3.6/lib/localcharset.c:221:23: note: Taking false branch
#                      if (fscanf (fp, "%50s %50s", buf1, buf2) < 2)
#                      ^
diffutils-3.6/lib/localcharset.c:226:23: note: Taking true branch
#                      if (res_size == 0)
#                      ^
diffutils-3.6/lib/localcharset.c:229:46: note: Memory is allocated
#                          res_ptr = (char *) malloc (res_size + 1);
#                                             ^~~~~~~~~~~~~~~~~~~~~
diffutils-3.6/lib/localcharset.c:236:27: note: Assuming 'res_ptr' is not equal 
to NULL
#                      if (res_ptr == NULL)
#                          ^~~~~~~~~~~~~~~
diffutils-3.6/lib/localcharset.c:236:23: note: Taking false branch
#                      if (res_ptr == NULL)
#                      ^
diffutils-3.6/lib/localcharset.c:197:19: note: Loop condition is true.  
Entering loop body
#                  for (;;)
#                  ^
diffutils-3.6/lib/localcharset.c:206:27: note: Assuming the condition is false
#                      if (c == EOF)
#                          ^~~~~~~~
diffutils-3.6/lib/localcharset.c:206:23: note: Taking false branch
#                      if (c == EOF)
#                      ^
diffutils-3.6/lib/localcharset.c:208:27: note: Assuming the condition is false
#                      if (c == '\n' || c == ' ' || c == '\t')
#                          ^~~~~~~~~
diffutils-3.6/lib/localcharset.c:208:27: note: Left side of '||' is false
diffutils-3.6/lib/localcharset.c:208:40: note: Assuming the condition is false
#                      if (c == '\n' || c == ' ' || c == '\t')
#                                       ^~~~~~~~
diffutils-3.6/lib/localcharset.c:208:27: note: Left side of '||' is false
#                      if (c == '\n' || c == ' ' || c == '\t')
#                          ^
diffutils-3.6/lib/localcharset.c:208:52: note: Assuming the condition is false
#                      if (c == '\n' || c == ' ' || c == '\t')
#                                                   ^~~~~~~~~
diffutils-3.6/lib/localcharset.c:208:23: note: Taking false branch
#                      if (c == '\n' || c == ' ' || c == '\t')
#                      ^
diffutils-3.6/lib/localcharset.c:210:27: note: Assuming the condition is false
#                      if (c == '#')
#                          ^~~~~~~~
diffutils-3.6/lib/localcharset.c:210:23: note: Taking false branch
#                      if (c == '#')
#                      ^
diffutils-3.6/lib/localcharset.c:221:27: note: Assuming the condition is false
#                      if (fscanf (fp, "%50s %50s", buf1, buf2) < 2)
#                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diffutils-3.6/lib/localcharset.c:221:23: note: Taking false branch
#                      if (fscanf (fp, "%50s %50s", buf1, buf2) < 2)
#                      ^
diffutils-3.6/lib/localcharset.c:226:27: note: Assuming 'res_size' is equal to 0
#                      if (res_size == 0)
#                          ^~~~~~~~~~~~~
diffutils-3.6/lib/localcharset.c:226:23: note: Taking true branch
#                      if (res_size == 0)
#                      ^
diffutils-3.6/lib/localcharset.c:236:27: note: Assuming 'res_ptr' is not equal 
to NULL
#                      if (res_ptr == NULL)
#                          ^~~~~~~~~~~~~~~
diffutils-3.6/lib/localcharset.c:236:23: note: Taking false branch
#                      if (res_ptr == NULL)
#                      ^
diffutils-3.6/lib/localcharset.c:243:23: note: Potential leak of memory pointed 
to by 'old_res_ptr'
#                      strcpy (res_ptr + res_size - (l2 + 1) - (l1 + 1), buf1);
#                      ^
#  241|                             break;
#  242|                           }
#  243|->                       strcpy (res_ptr + res_size - (l2 + 1) - (l1 + 
1), buf1);
#  244|                         strcpy (res_ptr + res_size - (l2 + 1), buf2);
#  245|                       }

Error: CHECKED_RETURN (CWE-252):
diffutils-3.6/lib/localcharset.c:246: check_return: Calling "fclose" without 
checking return value (as is done elsewhere 7 out of 8 times).
diffutils-3.6/lib/exclude.c:691: example_checked: Example 1: "fclose(in)" has 
its value checked in "fclose(in) != 0".
diffutils-3.6/src/cmp.c:156: example_checked: Example 2: "fclose(stdout)" has 
its value checked in "fclose(stdout) != 0".
diffutils-3.6/src/diff.c:886: example_checked: Example 3: "fclose(stdout)" has 
its value checked in "fclose(stdout) != 0".
diffutils-3.6/src/diff3.c:470: example_checked: Example 4: "fclose(stdout)" has 
its value checked in "fclose(stdout) != 0".
diffutils-3.6/src/sdiff.c:168: example_checked: Example 5: "fclose(stdout)" has 
its value checked in "fclose(stdout) != 0".
#  244|                         strcpy (res_ptr + res_size - (l2 + 1), buf2);
#  245|                       }
#  246|->                   fclose (fp);
#  247|                     if (res_size == 0)
#  248|                       cp = "";

Error: CLANG_WARNING:
diffutils-3.6/lib/localcharset.c:248:26: warning: Potential leak of memory 
pointed to by 'res_ptr'
#                    cp = "";
#                         ^
diffutils-3.6/lib/localcharset.c:588:7: note: Assuming 'codeset' is not equal 
to NULL
#  if (codeset == NULL)
#      ^~~~~~~~~~~~~~~
diffutils-3.6/lib/localcharset.c:588:3: note: Taking false branch
#  if (codeset == NULL)
#  ^
diffutils-3.6/lib/localcharset.c:593:18: note: Calling 'get_charset_aliases'
#  for (aliases = get_charset_aliases ();
#                 ^~~~~~~~~~~~~~~~~~~~~~
diffutils-3.6/lib/localcharset.c:130:7: note: Assuming 'cp' is equal to NULL
#  if (cp == NULL)
#      ^~~~~~~~~~
diffutils-3.6/lib/localcharset.c:130:3: note: Taking true branch
#  if (cp == NULL)
#  ^
diffutils-3.6/lib/localcharset.c:141:11: note: Assuming 'dir' is not equal to 
NULL
#      if (dir == NULL || dir[0] == '\0')
#          ^~~~~~~~~~~
diffutils-3.6/lib/localcharset.c:141:11: note: Left side of '||' is false
diffutils-3.6/lib/localcharset.c:141:26: note: Assuming the condition is false
#      if (dir == NULL || dir[0] == '\0')
#                         ^~~~~~~~~~~~~~
diffutils-3.6/lib/localcharset.c:141:7: note: Taking false branch
#      if (dir == NULL || dir[0] == '\0')
#      ^
diffutils-3.6/lib/localcharset.c:148:26: note: Assuming 'dir_len' is <= 0
#        int add_slash = (dir_len > 0 && !ISSLASH (dir[dir_len - 1]));
#                         ^~~~~~~~~~~
diffutils-3.6/lib/localcharset.c:148:38: note: Left side of '&&' is false
#        int add_slash = (dir_len > 0 && !ISSLASH (dir[dir_len - 1]));
#                                     ^
diffutils-3.6/lib/localcharset.c:150:13: note: Assuming 'file_name' is not 
equal to NULL
#        if (file_name != NULL)
#            ^~~~~~~~~~~~~~~~~
diffutils-3.6/lib/localcharset.c:150:9: note: Taking true branch
#        if (file_name != NULL)
#        ^
diffutils-3.6/lib/localcharset.c:153:13: note: Taking false branch
#            if (add_slash)
#            ^
diffutils-3.6/lib/localcharset.c:161:7: note: Taking false branch
#      if (file_name == NULL)
#      ^
diffutils-3.6/lib/localcharset.c:177:15: note: Assuming 'fd' is >= 0
#          if (fd < 0)
#              ^~~~~~
diffutils-3.6/lib/localcharset.c:177:11: note: Taking false branch
#          if (fd < 0)
#          ^
diffutils-3.6/lib/localcharset.c:185:19: note: Assuming 'fp' is not equal to 
NULL
#              if (fp == NULL)
#                  ^~~~~~~~~~
diffutils-3.6/lib/localcharset.c:185:15: note: Taking false branch
#              if (fp == NULL)
#              ^
diffutils-3.6/lib/localcharset.c:197:19: note: Loop condition is true.  
Entering loop body
#                  for (;;)
#                  ^
diffutils-3.6/lib/localcharset.c:206:23: note: Taking false branch
#                      if (c == EOF)
#                      ^
diffutils-3.6/lib/localcharset.c:208:27: note: Assuming the condition is false
#                      if (c == '\n' || c == ' ' || c == '\t')
#                          ^~~~~~~~~
diffutils-3.6/lib/localcharset.c:208:27: note: Left side of '||' is false
diffutils-3.6/lib/localcharset.c:208:40: note: Assuming the condition is false
#                      if (c == '\n' || c == ' ' || c == '\t')
#                                       ^~~~~~~~
diffutils-3.6/lib/localcharset.c:208:27: note: Left side of '||' is false
#                      if (c == '\n' || c == ' ' || c == '\t')
#                          ^
diffutils-3.6/lib/localcharset.c:208:52: note: Assuming the condition is false
#                      if (c == '\n' || c == ' ' || c == '\t')
#                                                   ^~~~~~~~~
diffutils-3.6/lib/localcharset.c:208:23: note: Taking false branch
#                      if (c == '\n' || c == ' ' || c == '\t')
#                      ^
diffutils-3.6/lib/localcharset.c:210:27: note: Assuming the condition is false
#                      if (c == '#')
#                          ^~~~~~~~
diffutils-3.6/lib/localcharset.c:210:23: note: Taking false branch
#                      if (c == '#')
#                      ^
diffutils-3.6/lib/localcharset.c:221:27: note: Assuming the condition is false
#                      if (fscanf (fp, "%50s %50s", buf1, buf2) < 2)
#                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diffutils-3.6/lib/localcharset.c:221:23: note: Taking false branch
#                      if (fscanf (fp, "%50s %50s", buf1, buf2) < 2)
#                      ^
diffutils-3.6/lib/localcharset.c:226:23: note: Taking true branch
#                      if (res_size == 0)
#                      ^
diffutils-3.6/lib/localcharset.c:229:46: note: Memory is allocated
#                          res_ptr = (char *) malloc (res_size + 1);
#                                             ^~~~~~~~~~~~~~~~~~~~~
diffutils-3.6/lib/localcharset.c:236:27: note: Assuming 'res_ptr' is not equal 
to NULL
#                      if (res_ptr == NULL)
#                          ^~~~~~~~~~~~~~~
diffutils-3.6/lib/localcharset.c:236:23: note: Taking false branch
#                      if (res_ptr == NULL)
#                      ^
diffutils-3.6/lib/localcharset.c:197:19: note: Loop condition is true.  
Entering loop body
#                  for (;;)
#                  ^
diffutils-3.6/lib/localcharset.c:206:27: note: Assuming the condition is true
#                      if (c == EOF)
#                          ^~~~~~~~
diffutils-3.6/lib/localcharset.c:206:23: note: Taking true branch
#                      if (c == EOF)
#                      ^
diffutils-3.6/lib/localcharset.c:207:25: note:  Execution continues on line 246
#                        break;
#                        ^
diffutils-3.6/lib/localcharset.c:247:23: note: Assuming 'res_size' is equal to 0
#                  if (res_size == 0)
#                      ^~~~~~~~~~~~~
diffutils-3.6/lib/localcharset.c:247:19: note: Taking true branch
#                  if (res_size == 0)
#                  ^
diffutils-3.6/lib/localcharset.c:248:26: note: Potential leak of memory pointed 
to by 'res_ptr'
#                    cp = "";
#                         ^
#  246|                     fclose (fp);
#  247|                     if (res_size == 0)
#  248|->                     cp = "";
#  249|                     else
#  250|                       {

Error: DEADCODE (CWE-561):
diffutils-3.6/lib/mktime.c:107: assignment: Assigning: "one" = "1L".
diffutils-3.6/lib/mktime.c:108: const: At condition "(-one >> 1) == 
0xffffffffffffffffL", the value of "one" must be equal to 1.
diffutils-3.6/lib/mktime.c:108: dead_error_condition: The condition "(-one >> 
1) == 0xffffffffffffffffL" must be true.
diffutils-3.6/lib/mktime.c:108: dead_error_line: Execution cannot reach the 
expression "a / (one << b)" inside this statement: "return ((-one >> 1) == 
0xff...".
#  106|   {
#  107|     long_int one = 1;
#  108|->   return (-one >> 1 == -1
#  109|           ? a >> b
#  110|           : a / (one << b) - (a % (one << b) < 0));

Error: CONSTANT_EXPRESSION_RESULT (CWE-398):
diffutils-3.6/lib/mktime.c:270: result_independent_of_operands: "*t < 
-9223372036854775808L /* mktime_min */" is always false regardless of the 
values of its operands. This occurs as the logical operand of "if".
#  268|   {
#  269|     struct tm *r;
#  270|->   if (*t < mktime_min)
#  271|       *t = mktime_min;
#  272|     else if (mktime_max < *t)

Error: CONSTANT_EXPRESSION_RESULT (CWE-398):
diffutils-3.6/lib/mktime.c:272: result_independent_of_operands: 
"9223372036854775807L /* mktime_max */ < *t" is always false regardless of the 
values of its operands. This occurs as the logical operand of "if".
#  270|     if (*t < mktime_min)
#  271|       *t = mktime_min;
#  272|->   else if (mktime_max < *t)
#  273|       *t = mktime_max;
#  274|     r = convert_time (convert, *t, tp);

Error: CONSTANT_EXPRESSION_RESULT (CWE-398):
diffutils-3.6/lib/mktime.c:472: result_independent_of_operands: 
"-9223372036854775808L /* mktime_min */ <= t" is always true regardless of the 
values of its operands. This occurs as the logical first operand of "&&".
#  470|         sec_adjustment += sec_requested;
#  471|         if (INT_ADD_WRAPV (t, sec_adjustment, &t)
#  472|->         || ! (mktime_min <= t && t <= mktime_max)
#  473|           || ! convert_time (convert, t, &tm))
#  474|         return -1;

Error: CONSTANT_EXPRESSION_RESULT (CWE-398):
diffutils-3.6/lib/quotearg.c:653: same_on_both_sides: "91 == 91" is always true 
regardless of the values of its operands because those operands are identical. 
This occurs as the logical first operand of "&&".
#  651|                              In practice the problem is limited to ASCII
#  652|                              chars >= '@' that are shell special chars. 
 */
#  653|->                         if ('[' == 0x5b && elide_outer_quotes
#  654|                               && quoting_style == 
shell_always_quoting_style)
#  655|                             {

Error: NO_EFFECT (CWE-398):
diffutils-3.6/lib/strftime.c:660: bad_memset: Function "memset" with fill value 
"'0'" (the zero character) in "memset(p, 48, _delta)".
diffutils-3.6/lib/strftime.c:660: remediation: Did you intend to use 0 (the 
value zero)?
#  658|         if (*f != L_('%'))
#  659|           {
#  660|->           add1 (*f);
#  661|             continue;
#  662|           }

Error: CPPCHECK_WARNING:
diffutils-3.6/lib/strftime.c:660: error[invalidFunctionArg]: Invalid memset() 
argument nr 3. The value is -2 but the valid values are '0:'.
#  658|         if (*f != L_('%'))
#  659|           {
#  660|->           add1 (*f);
#  661|             continue;
#  662|           }

Error: NO_EFFECT (CWE-398):
diffutils-3.6/lib/strftime.c:771: bad_memset: Function "memset" with fill value 
"'0'" (the zero character) in "memset(p, 48, _delta)".
diffutils-3.6/lib/strftime.c:771: remediation: Did you intend to use 0 (the 
value zero)?
#  769|             if (modifier != 0)
#  770|               goto bad_format;
#  771|->           add1 (*f);
#  772|             break;
#  773|   

Error: NO_EFFECT (CWE-398):
diffutils-3.6/lib/strftime.c:855: bad_memset: Function "memset" with fill value 
"'0'" (the zero character) in "memset(p, 48, _delta)".
diffutils-3.6/lib/strftime.c:855: remediation: Did you intend to use 0 (the 
value zero)?
#  853|                                                 tp, to_uppcase, 
tzset_called
#  854|                                                 extra_args LOCALE_ARG);
#  855|->             add (len, __strftime_internal (p,
#  856|                                              STRFTIME_ARG (maxsize - i)
#  857|                                              subfmt,

Error: NO_EFFECT (CWE-398):
diffutils-3.6/lib/strftime.c:890: bad_memset: Function "memset" with fill value 
"'0'" (the zero character) in "memset(p, 48, _delta)".
diffutils-3.6/lib/strftime.c:890: remediation: Did you intend to use 0 (the 
value zero)?
#  888|               len = strftime (ubuf, sizeof ubuf, ufmt, tp);
#  889|               if (len != 0)
#  890|->               cpy (len - 1, ubuf + 1);
#  891|             }
#  892|             break;

Error: NO_EFFECT (CWE-398):
diffutils-3.6/lib/strftime.c:1028: bad_memset: Function "memset" with fill 
value "'0'" (the zero character) in "memset(p, 48, _delta)".
diffutils-3.6/lib/strftime.c:1028: remediation: Did you intend to use 0 (the 
value zero)?
# 1026|               {
# 1027|                 if (sign_char)
# 1028|->                 add1 (sign_char);
# 1029|               }
# 1030|             else

Error: NO_EFFECT (CWE-398):
diffutils-3.6/lib/strftime.c:1047: bad_memset: Function "memset" with fill 
value "'0'" (the zero character) in "memset(p, 48, _delta)".
diffutils-3.6/lib/strftime.c:1047: remediation: Did you intend to use 0 (the 
value zero)?
# 1045|                         width = width > padding ? width - padding : 0;
# 1046|                         if (sign_char)
# 1047|->                         add1 (sign_char);
# 1048|                       }
# 1049|                     else

Error: NO_EFFECT (CWE-398):
diffutils-3.6/lib/strftime.c:1055: bad_memset: Function "memset" with fill 
value "'0'" (the zero character) in "memset(p, 48, _delta)".
diffutils-3.6/lib/strftime.c:1055: remediation: Did you intend to use 0 (the 
value zero)?
# 1053|   
# 1054|                         if (sign_char)
# 1055|->                         add1 (sign_char);
# 1056|   
# 1057|                         if (p)

Error: NO_EFFECT (CWE-398):
diffutils-3.6/lib/strftime.c:1058: bad_memset: Function "memset" with fill 
value "'0'" (the zero character) in "memset(p, 48, padding)".
diffutils-3.6/lib/strftime.c:1058: remediation: Did you intend to use 0 (the 
value zero)?
# 1056|   
# 1057|                         if (p)
# 1058|->                         memset_zero (p, padding);
# 1059|                         i += padding;
# 1060|                         width = 0;

Error: NO_EFFECT (CWE-398):
diffutils-3.6/lib/strftime.c:1066: bad_memset: Function "memset" with fill 
value "'0'" (the zero character) in "memset(p, 48, _delta)".
diffutils-3.6/lib/strftime.c:1066: remediation: Did you intend to use 0 (the 
value zero)?
# 1064|                   {
# 1065|                     if (sign_char)
# 1066|->                     add1 (sign_char);
# 1067|                   }
# 1068|               }

Error: NO_EFFECT (CWE-398):
diffutils-3.6/lib/strftime.c:1070: bad_memset: Function "memset" with fill 
value "'0'" (the zero character) in "memset(p, 48, _delta)".
diffutils-3.6/lib/strftime.c:1070: remediation: Did you intend to use 0 (the 
value zero)?
# 1068|               }
# 1069|   
# 1070|->           cpy (buf + sizeof (buf) / sizeof (buf[0]) - bufp, bufp);
# 1071|             break;
# 1072|   

Error: NO_EFFECT (CWE-398):
diffutils-3.6/lib/strftime.c:1141: bad_memset: Function "memset" with fill 
value "'0'" (the zero character) in "memset(p, 48, _delta)".
diffutils-3.6/lib/strftime.c:1141: remediation: Did you intend to use 0 (the 
value zero)?
# 1139|   
# 1140|           case L_('n'):
# 1141|->           add1 (L_('\n'));
# 1142|             break;
# 1143|   

Error: NO_EFFECT (CWE-398):
diffutils-3.6/lib/strftime.c:1233: bad_memset: Function "memset" with fill 
value "'0'" (the zero character) in "memset(p, 48, _delta)".
diffutils-3.6/lib/strftime.c:1233: remediation: Did you intend to use 0 (the 
value zero)?
# 1231|   
# 1232|           case L_('t'):
# 1233|->           add1 (L_('\t'));
# 1234|             break;
# 1235|   

Error: NO_EFFECT (CWE-398):
diffutils-3.6/lib/strftime.c:1379: bad_memset: Function "memset" with fill 
value "'0'" (the zero character) in "memset(p, 48, _delta)".
diffutils-3.6/lib/strftime.c:1379: remediation: Did you intend to use 0 (the 
value zero)?
# 1377|             }
# 1378|   #else
# 1379|->           cpy (strlen (zone), zone);
# 1380|   #endif
# 1381|             break;

Error: NO_EFFECT (CWE-398):
diffutils-3.6/lib/strftime.c:1494: bad_memset: Function "memset" with fill 
value "'0'" (the zero character) in "memset(p, 48, _delta)".
diffutils-3.6/lib/strftime.c:1494: remediation: Did you intend to use 0 (the 
value zero)?
# 1492|               for (flen = 1; f[1 - flen] != L_('%'); flen++)
# 1493|                 continue;
# 1494|->             cpy (flen, &f[1 - flen]);
# 1495|             }
# 1496|             break;

Error: COMPILER_WARNING:
diffutils-3.6/lib/trim.c: scope_hint: In function 'trim2'
diffutils-3.6/lib/trim.c:103:16: warning: 'r' may be used uninitialized in this 
function [-Wmaybe-uninitialized]
#             *r = '\0';
#             ~~~^~~~~~
#  101|   
#  102|             if (state == 2)
#  103|->             *r = '\0';
#  104|           }
#  105|       }

Error: FORWARD_NULL (CWE-476):
diffutils-3.6/lib/vasnprintf.c:1848: assign_zero: Assigning: "result" = "NULL".
diffutils-3.6/lib/vasnprintf.c:1894: var_deref_model: Passing null pointer 
"result + length" to "memcpy", which dereferences it. [Note: The source code 
implementation of the function has been overridden by a builtin model.]
# 1892|               if (sizeof (FCHAR_T) == sizeof (DCHAR_T))
# 1893|                 {
# 1894|->                 DCHAR_CPY (result + length, (const DCHAR_T *) cp, n);
# 1895|                   length = augmented_length;
# 1896|                 }

Error: FORWARD_NULL (CWE-476):
diffutils-3.6/lib/vasnprintf.c:1848: assign_zero: Assigning: "result" = "NULL".
diffutils-3.6/lib/vasnprintf.c:1916: var_deref_op: Dereferencing null pointer 
"result".
# 1914|               augmented_length = xsum (length, 1);
# 1915|               ENSURE_ALLOCATION (augmented_length);
# 1916|->             result[length] = '%';
# 1917|               length = augmented_length;
# 1918|             }

Error: FORWARD_NULL (CWE-476):
diffutils-3.6/lib/vasnprintf.c:1848: assign_zero: Assigning: "result" = "NULL".
diffutils-3.6/lib/vasnprintf.c:4936: var_deref_op: Dereferencing null pointer 
"result".
# 4934|                   /* Prepare checking whether snprintf returns the count
# 4935|                      via %n.  */
# 4936|->                 *(TCHAR_T *) (result + length) = '\0';
# 4937|   #endif
# 4938|   

Error: FORWARD_NULL (CWE-476):
diffutils-3.6/lib/vasnprintf.c:1848: assign_zero: Assigning: "result" = "NULL".
diffutils-3.6/lib/vasnprintf.c:5551: var_deref_op: Dereferencing null pointer 
"result".
# 5549|       /* Add the final NUL.  */
# 5550|       ENSURE_ALLOCATION (xsum (length, 1));
# 5551|->     result[length] = '\0';
# 5552|   
# 5553|       if (result != resultbuf && length + 1 < allocated)

Error: CPPCHECK_WARNING (CWE-401):
diffutils-3.6/lib/xmalloc.c:86: error[leakNoVarFunctionCall]: Allocation with 
xmalloc, memset doesn't release it.
#   84|   xzalloc (size_t s)
#   85|   {
#   86|->   return memset (xmalloc (s), 0, s);
#   87|   }
#   88|   

Error: CPPCHECK_WARNING (CWE-401):
diffutils-3.6/lib/xmalloc.c:113: error[leakNoVarFunctionCall]: Allocation with 
xmalloc, memcpy doesn't release it.
#  111|   xmemdup (void const *p, size_t s)
#  112|   {
#  113|->   return memcpy (xmalloc (s), p, s);
#  114|   }
#  115|   

Error: BAD_FREE (CWE-763):
diffutils-3.6/src/analyze.c:691: offset_free: "free" frees address offset from 
"cmp->file[f].linbuf".
#  689|         {
#  690|           free (cmp->file[f].equivs);
#  691|->         free (cmp->file[f].linbuf + cmp->file[f].linbuf_base);
#  692|         }
#  693|   

Error: CLANG_WARNING:
diffutils-3.6/src/cmp.c:538:6: warning: 2nd function call argument is an 
uninitialized value
#                          printf ("%*s %3o %3o\n",
#                          ^
diffutils-3.6/src/cmp.c:397:3: note: 'offset_width' declared without an initial 
value
#  int offset_width IF_LINT (= 0);
#  ^~~~~~~~~~~~~~~~
diffutils-3.6/src/cmp.c:399:7: note: Assuming 'comparison_type' is not equal to 
type_all_diffs
#  if (comparison_type == type_all_diffs)
#      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diffutils-3.6/src/cmp.c:399:3: note: Taking false branch
#  if (comparison_type == type_all_diffs)
#  ^
diffutils-3.6/src/cmp.c:415:3: note: Loop condition is true.  Entering loop body
#  for (f = 0; f < 2; f++)
#  ^
diffutils-3.6/src/cmp.c:418:11: note: Assuming 'ig' is 0
#      if (ig && file_position (f) == -1)
#          ^~
diffutils-3.6/src/cmp.c:418:14: note: Left side of '&&' is false
#      if (ig && file_position (f) == -1)
#             ^
diffutils-3.6/src/cmp.c:415:3: note: Loop condition is true.  Entering loop body
#  for (f = 0; f < 2; f++)
#  ^
diffutils-3.6/src/cmp.c:418:11: note: Assuming 'ig' is 0
#      if (ig && file_position (f) == -1)
#          ^~
diffutils-3.6/src/cmp.c:418:14: note: Left side of '&&' is false
#      if (ig && file_position (f) == -1)
#             ^
diffutils-3.6/src/cmp.c:415:3: note: Loop condition is false. Execution 
continues on line 439
#  for (f = 0; f < 2; f++)
#  ^
diffutils-3.6/src/cmp.c:441:11: note: Assuming 'remaining' is equal to 
UINTMAX_MAX
#      if (remaining != UINTMAX_MAX)
#          ^~~~~~~~~~~~~~~~~~~~~~~~
diffutils-3.6/src/cmp.c:441:7: note: Taking false branch
#      if (remaining != UINTMAX_MAX)
#      ^
diffutils-3.6/src/cmp.c:449:11: note: Assuming 'read0' is not equal to SIZE_MAX
#      if (read0 == SIZE_MAX)
#          ^~~~~~~~~~~~~~~~~
diffutils-3.6/src/cmp.c:449:7: note: Taking false branch
#      if (read0 == SIZE_MAX)
#      ^
diffutils-3.6/src/cmp.c:452:11: note: Assuming 'read1' is not equal to SIZE_MAX
#      if (read1 == SIZE_MAX)
#          ^~~~~~~~~~~~~~~~~
diffutils-3.6/src/cmp.c:452:7: note: Taking false branch
#      if (read1 == SIZE_MAX)
#      ^
diffutils-3.6/src/cmp.c:458:11: note: Assuming the condition is false
#      if (memcmp (buf0, buf1, smaller) == 0)
#          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diffutils-3.6/src/cmp.c:458:7: note: Taking false branch
#      if (memcmp (buf0, buf1, smaller) == 0)
#      ^
diffutils-3.6/src/cmp.c:470:11: note: Assuming 'comparison_type' is not equal 
to type_first_diff
#      if (comparison_type == type_first_diff && first_diff != 0)
#          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diffutils-3.6/src/cmp.c:470:46: note: Left side of '&&' is false
#      if (comparison_type == type_first_diff && first_diff != 0)
#                                             ^
diffutils-3.6/src/cmp.c:476:7: note: Taking true branch
#      if (first_diff < smaller)
#      ^
diffutils-3.6/src/cmp.c:478:4: note: Control jumps to 'case type_all_diffs:'  
at line 526
#          switch (comparison_type)
#          ^
diffutils-3.6/src/cmp.c:531:5: note: Taking false branch
#                  if (c0 != c1)
#                  ^
diffutils-3.6/src/cmp.c:554:15: note: Assuming 'first_diff' is >= 'smaller'
#              while (first_diff < smaller);
#                     ^~~~~~~~~~~~~~~~~~~~
diffutils-3.6/src/cmp.c:527:8: note: Loop condition is false.  Exiting loop
#              do
#              ^
diffutils-3.6/src/cmp.c:556:8: note:  Execution continues on line 564
#              break;
#              ^
diffutils-3.6/src/cmp.c:564:11: note: Assuming 'read0' is equal to 'read1'
#      if (read0 != read1)
#          ^~~~~~~~~~~~~~
diffutils-3.6/src/cmp.c:564:7: note: Taking false branch
#      if (read0 != read1)
#      ^
diffutils-3.6/src/cmp.c:603:10: note: Left side of '&&' is true
#  while (differing <= 0 && read0 == buf_size);
#         ^
diffutils-3.6/src/cmp.c:603:28: note: Assuming 'read0' is equal to 'buf_size'
#  while (differing <= 0 && read0 == buf_size);
#                           ^~~~~~~~~~~~~~~~~
diffutils-3.6/src/cmp.c:437:3: note: Loop condition is true. Execution 
continues on line 439
#  do
#  ^
diffutils-3.6/src/cmp.c:441:7: note: Taking false branch
#      if (remaining != UINTMAX_MAX)
#      ^
diffutils-3.6/src/cmp.c:449:11: note: Assuming 'read0' is not equal to SIZE_MAX
#      if (read0 == SIZE_MAX)
#          ^~~~~~~~~~~~~~~~~
diffutils-3.6/src/cmp.c:449:7: note: Taking false branch
#      if (read0 == SIZE_MAX)
#      ^
diffutils-3.6/src/cmp.c:452:11: note: Assuming 'read1' is not equal to SIZE_MAX
#      if (read1 == SIZE_MAX)
#          ^~~~~~~~~~~~~~~~~
diffutils-3.6/src/cmp.c:452:7: note: Taking false branch
#      if (read1 == SIZE_MAX)
#      ^
diffutils-3.6/src/cmp.c:458:11: note: Assuming the condition is false
#      if (memcmp (buf0, buf1, smaller) == 0)
#          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diffutils-3.6/src/cmp.c:458:7: note: Taking false branch
#      if (memcmp (buf0, buf1, smaller) == 0)
#      ^
diffutils-3.6/src/cmp.c:470:11: note: Assuming 'comparison_type' is not equal 
to type_first_diff
#      if (comparison_type == type_first_diff && first_diff != 0)
#          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diffutils-3.6/src/cmp.c:470:46: note: Left side of '&&' is false
#      if (comparison_type == type_first_diff && first_diff != 0)
#                                             ^
diffutils-3.6/src/cmp.c:476:7: note: Taking true branch
#      if (first_diff < smaller)
#      ^
diffutils-3.6/src/cmp.c:478:4: note: Control jumps to 'case type_all_diffs:'  
at line 526
#          switch (comparison_type)
#          ^
diffutils-3.6/src/cmp.c:531:5: note: Taking false branch
#                  if (c0 != c1)
#                  ^
diffutils-3.6/src/cmp.c:554:15: note: Assuming 'first_diff' is >= 'smaller'
#              while (first_diff < smaller);
#                     ^~~~~~~~~~~~~~~~~~~~
diffutils-3.6/src/cmp.c:527:8: note: Loop condition is false.  Exiting loop
#              do
#              ^
diffutils-3.6/src/cmp.c:556:8: note:  Execution continues on line 564
#              break;
#              ^
diffutils-3.6/src/cmp.c:564:11: note: Assuming 'read0' is equal to 'read1'
#      if (read0 != read1)
#          ^~~~~~~~~~~~~~
diffutils-3.6/src/cmp.c:564:7: note: Taking false branch
#      if (read0 != read1)
#      ^
diffutils-3.6/src/cmp.c:603:10: note: Left side of '&&' is true
#  while (differing <= 0 && read0 == buf_size);
#         ^
diffutils-3.6/src/cmp.c:603:28: note: Assuming 'read0' is equal to 'buf_size'
#  while (differing <= 0 && read0 == buf_size);
#                           ^~~~~~~~~~~~~~~~~
diffutils-3.6/src/cmp.c:437:3: note: Loop condition is true. Execution 
continues on line 439
#  do
#  ^
diffutils-3.6/src/cmp.c:441:7: note: Taking false branch
#      if (remaining != UINTMAX_MAX)
#      ^
diffutils-3.6/src/cmp.c:449:11: note: Assuming 'read0' is not equal to SIZE_MAX
#      if (read0 == SIZE_MAX)
#          ^~~~~~~~~~~~~~~~~
diffutils-3.6/src/cmp.c:449:7: note: Taking false branch
#      if (read0 == SIZE_MAX)
#      ^
diffutils-3.6/src/cmp.c:452:11: note: Assuming 'read1' is not equal to SIZE_MAX
#      if (read1 == SIZE_MAX)
#          ^~~~~~~~~~~~~~~~~
diffutils-3.6/src/cmp.c:452:7: note: Taking false branch
#      if (read1 == SIZE_MAX)
#      ^
diffutils-3.6/src/cmp.c:458:11: note: Assuming the condition is false
#      if (memcmp (buf0, buf1, smaller) == 0)
#          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diffutils-3.6/src/cmp.c:458:7: note: Taking false branch
#      if (memcmp (buf0, buf1, smaller) == 0)
#      ^
diffutils-3.6/src/cmp.c:470:11: note: Assuming 'comparison_type' is not equal 
to type_first_diff
#      if (comparison_type == type_first_diff && first_diff != 0)
#          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diffutils-3.6/src/cmp.c:470:46: note: Left side of '&&' is false
#      if (comparison_type == type_first_diff && first_diff != 0)
#                                             ^
diffutils-3.6/src/cmp.c:476:7: note: Taking true branch
#      if (first_diff < smaller)
#      ^
diffutils-3.6/src/cmp.c:478:4: note: Control jumps to 'case type_all_diffs:'  
at line 526
#          switch (comparison_type)
#          ^
diffutils-3.6/src/cmp.c:531:5: note: Taking true branch
#                  if (c0 != c1)
#                  ^
diffutils-3.6/src/cmp.c:535:13: note: Assuming 'opt_print_bytes' is 0
#                      if (!opt_print_bytes)
#                          ^~~~~~~~~~~~~~~~
diffutils-3.6/src/cmp.c:535:9: note: Taking true branch
#                      if (!opt_print_bytes)
#                      ^
diffutils-3.6/src/cmp.c:538:6: note: 2nd function call argument is an 
uninitialized value
#                          printf ("%*s %3o %3o\n",
#                          ^
#  536|                         {
#  537|                           /* See POSIX for this format.  */
#  538|->                         printf ("%*s %3o %3o\n",
#  539|                                   offset_width, byte_num, c0, c1);
#  540|                         }

Error: CLANG_WARNING:
diffutils-3.6/src/cmp.c:547:6: warning: 2nd function call argument is an 
uninitialized value
#                          printf ("%*s %3o %-4s %3o %s\n",
#                          ^
diffutils-3.6/src/cmp.c:397:3: note: 'offset_width' declared without an initial 
value
#  int offset_width IF_LINT (= 0);
#  ^~~~~~~~~~~~~~~~
diffutils-3.6/src/cmp.c:399:7: note: Assuming 'comparison_type' is not equal to 
type_all_diffs
#  if (comparison_type == type_all_diffs)
#      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diffutils-3.6/src/cmp.c:399:3: note: Taking false branch
#  if (comparison_type == type_all_diffs)
#  ^
diffutils-3.6/src/cmp.c:415:3: note: Loop condition is true.  Entering loop body
#  for (f = 0; f < 2; f++)
#  ^
diffutils-3.6/src/cmp.c:418:11: note: Assuming 'ig' is 0
#      if (ig && file_position (f) == -1)
#          ^~
diffutils-3.6/src/cmp.c:418:14: note: Left side of '&&' is false
#      if (ig && file_position (f) == -1)
#             ^
diffutils-3.6/src/cmp.c:415:3: note: Loop condition is true.  Entering loop body
#  for (f = 0; f < 2; f++)
#  ^
diffutils-3.6/src/cmp.c:418:11: note: Assuming 'ig' is 0
#      if (ig && file_position (f) == -1)
#          ^~
diffutils-3.6/src/cmp.c:418:14: note: Left side of '&&' is false
#      if (ig && file_position (f) == -1)
#             ^
diffutils-3.6/src/cmp.c:415:3: note: Loop condition is false. Execution 
continues on line 439
#  for (f = 0; f < 2; f++)
#  ^
diffutils-3.6/src/cmp.c:441:11: note: Assuming 'remaining' is equal to 
UINTMAX_MAX
#      if (remaining != UINTMAX_MAX)
#          ^~~~~~~~~~~~~~~~~~~~~~~~
diffutils-3.6/src/cmp.c:441:7: note: Taking false branch
#      if (remaining != UINTMAX_MAX)
#      ^
diffutils-3.6/src/cmp.c:449:11: note: Assuming 'read0' is not equal to SIZE_MAX
#      if (read0 == SIZE_MAX)
#          ^~~~~~~~~~~~~~~~~
diffutils-3.6/src/cmp.c:449:7: note: Taking false branch
#      if (read0 == SIZE_MAX)
#      ^
diffutils-3.6/src/cmp.c:452:11: note: Assuming 'read1' is not equal to SIZE_MAX
#      if (read1 == SIZE_MAX)
#          ^~~~~~~~~~~~~~~~~
diffutils-3.6/src/cmp.c:452:7: note: Taking false branch
#      if (read1 == SIZE_MAX)
#      ^
diffutils-3.6/src/cmp.c:458:11: note: Assuming the condition is false
#      if (memcmp (buf0, buf1, smaller) == 0)
#          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diffutils-3.6/src/cmp.c:458:7: note: Taking false branch
#      if (memcmp (buf0, buf1, smaller) == 0)
#      ^
diffutils-3.6/src/cmp.c:470:11: note: Assuming 'comparison_type' is not equal 
to type_first_diff
#      if (comparison_type == type_first_diff && first_diff != 0)
#          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diffutils-3.6/src/cmp.c:470:46: note: Left side of '&&' is false
#      if (comparison_type == type_first_diff && first_diff != 0)
#                                             ^
diffutils-3.6/src/cmp.c:476:7: note: Taking true branch
#      if (first_diff < smaller)
#      ^
diffutils-3.6/src/cmp.c:478:4: note: Control jumps to 'case type_all_diffs:'  
at line 526
#          switch (comparison_type)
#          ^
diffutils-3.6/src/cmp.c:531:5: note: Taking false branch
#                  if (c0 != c1)
#                  ^
diffutils-3.6/src/cmp.c:554:15: note: Assuming 'first_diff' is >= 'smaller'
#              while (first_diff < smaller);
#                     ^~~~~~~~~~~~~~~~~~~~
diffutils-3.6/src/cmp.c:527:8: note: Loop condition is false.  Exiting loop
#              do
#              ^
diffutils-3.6/src/cmp.c:556:8: note:  Execution continues on line 564
#              break;
#              ^
diffutils-3.6/src/cmp.c:564:11: note: Assuming 'read0' is equal to 'read1'
#      if (read0 != read1)
#          ^~~~~~~~~~~~~~
diffutils-3.6/src/cmp.c:564:7: note: Taking false branch
#      if (read0 != read1)
#      ^
diffutils-3.6/src/cmp.c:603:10: note: Left side of '&&' is true
#  while (differing <= 0 && read0 == buf_size);
#         ^
diffutils-3.6/src/cmp.c:603:28: note: Assuming 'read0' is equal to 'buf_size'
#  while (differing <= 0 && read0 == buf_size);
#                           ^~~~~~~~~~~~~~~~~
diffutils-3.6/src/cmp.c:437:3: note: Loop condition is true. Execution 
continues on line 439
#  do
#  ^
diffutils-3.6/src/cmp.c:441:7: note: Taking false branch
#      if (remaining != UINTMAX_MAX)
#      ^
diffutils-3.6/src/cmp.c:449:11: note: Assuming 'read0' is not equal to SIZE_MAX
#      if (read0 == SIZE_MAX)
#          ^~~~~~~~~~~~~~~~~
diffutils-3.6/src/cmp.c:449:7: note: Taking false branch
#      if (read0 == SIZE_MAX)
#      ^
diffutils-3.6/src/cmp.c:452:11: note: Assuming 'read1' is not equal to SIZE_MAX
#      if (read1 == SIZE_MAX)
#          ^~~~~~~~~~~~~~~~~
diffutils-3.6/src/cmp.c:452:7: note: Taking false branch
#      if (read1 == SIZE_MAX)
#      ^
diffutils-3.6/src/cmp.c:458:11: note: Assuming the condition is false
#      if (memcmp (buf0, buf1, smaller) == 0)
#          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diffutils-3.6/src/cmp.c:458:7: note: Taking false branch
#      if (memcmp (buf0, buf1, smaller) == 0)
#      ^
diffutils-3.6/src/cmp.c:470:11: note: Assuming 'comparison_type' is not equal 
to type_first_diff
#      if (comparison_type == type_first_diff && first_diff != 0)
#          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diffutils-3.6/src/cmp.c:470:46: note: Left side of '&&' is false
#      if (comparison_type == type_first_diff && first_diff != 0)
#                                             ^
diffutils-3.6/src/cmp.c:476:7: note: Taking true branch
#      if (first_diff < smaller)
#      ^
diffutils-3.6/src/cmp.c:478:4: note: Control jumps to 'case type_all_diffs:'  
at line 526
#          switch (comparison_type)
#          ^
diffutils-3.6/src/cmp.c:531:5: note: Taking false branch
#                  if (c0 != c1)
#                  ^
diffutils-3.6/src/cmp.c:554:15: note: Assuming 'first_diff' is >= 'smaller'
#              while (first_diff < smaller);
#                     ^~~~~~~~~~~~~~~~~~~~
diffutils-3.6/src/cmp.c:527:8: note: Loop condition is false.  Exiting loop
#              do
#              ^
diffutils-3.6/src/cmp.c:556:8: note:  Execution continues on line 564
#              break;
#              ^
diffutils-3.6/src/cmp.c:564:11: note: Assuming 'read0' is equal to 'read1'
#      if (read0 != read1)
#          ^~~~~~~~~~~~~~
diffutils-3.6/src/cmp.c:564:7: note: Taking false branch
#      if (read0 != read1)
#      ^
diffutils-3.6/src/cmp.c:603:10: note: Left side of '&&' is true
#  while (differing <= 0 && read0 == buf_size);
#         ^
diffutils-3.6/src/cmp.c:603:28: note: Assuming 'read0' is equal to 'buf_size'
#  while (differing <= 0 && read0 == buf_size);
#                           ^~~~~~~~~~~~~~~~~
diffutils-3.6/src/cmp.c:437:3: note: Loop condition is true. Execution 
continues on line 439
#  do
#  ^
diffutils-3.6/src/cmp.c:441:7: note: Taking false branch
#      if (remaining != UINTMAX_MAX)
#      ^
diffutils-3.6/src/cmp.c:449:11: note: Assuming 'read0' is not equal to SIZE_MAX
#      if (read0 == SIZE_MAX)
#          ^~~~~~~~~~~~~~~~~
diffutils-3.6/src/cmp.c:449:7: note: Taking false branch
#      if (read0 == SIZE_MAX)
#      ^
diffutils-3.6/src/cmp.c:452:11: note: Assuming 'read1' is not equal to SIZE_MAX
#      if (read1 == SIZE_MAX)
#          ^~~~~~~~~~~~~~~~~
diffutils-3.6/src/cmp.c:452:7: note: Taking false branch
#      if (read1 == SIZE_MAX)
#      ^
diffutils-3.6/src/cmp.c:458:11: note: Assuming the condition is false
#      if (memcmp (buf0, buf1, smaller) == 0)
#          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diffutils-3.6/src/cmp.c:458:7: note: Taking false branch
#      if (memcmp (buf0, buf1, smaller) == 0)
#      ^
diffutils-3.6/src/cmp.c:470:11: note: Assuming 'comparison_type' is not equal 
to type_first_diff
#      if (comparison_type == type_first_diff && first_diff != 0)
#          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diffutils-3.6/src/cmp.c:470:46: note: Left side of '&&' is false
#      if (comparison_type == type_first_diff && first_diff != 0)
#                                             ^
diffutils-3.6/src/cmp.c:476:7: note: Taking true branch
#      if (first_diff < smaller)
#      ^
diffutils-3.6/src/cmp.c:478:4: note: Control jumps to 'case type_all_diffs:'  
at line 526
#          switch (comparison_type)
#          ^
diffutils-3.6/src/cmp.c:531:5: note: Taking true branch
#                  if (c0 != c1)
#                  ^
diffutils-3.6/src/cmp.c:535:13: note: Assuming 'opt_print_bytes' is not equal 
to 0
#                      if (!opt_print_bytes)
#                          ^~~~~~~~~~~~~~~~
diffutils-3.6/src/cmp.c:535:9: note: Taking false branch
#                      if (!opt_print_bytes)
#                      ^
diffutils-3.6/src/cmp.c:547:6: note: 2nd function call argument is an 
uninitialized value
#                          printf ("%*s %3o %-4s %3o %s\n",
#                          ^
#  545|                           sprintc (s0, c0);
#  546|                           sprintc (s1, c1);
#  547|->                         printf ("%*s %3o %-4s %3o %s\n",
#  548|                                   offset_width, byte_num, c0, s0, c1, 
s1);
#  549|                         }

Error: FORWARD_NULL (CWE-476):
diffutils-3.6/src/diff.c:826: var_compare_op: Comparing "regexps" to null 
implies that "regexps" might be null.
diffutils-3.6/src/diff.c:846: var_deref_model: Passing null pointer "regexps + 
len" to "memcpy", which dereferences it. [Note: The source code implementation 
of the function has been overridden by a builtin model.]
#  844|           regexps[len++] = '|';
#  845|         }
#  846|->       memcpy (regexps + len, pattern, patlen + 1);
#  847|       }
#  848|   }

Error: RESOURCE_LEAK (CWE-772):
diffutils-3.6/src/diff3.c:783: alloc_fn: Storage is returned from allocation 
function "create_diff3_block".
diffutils-3.6/src/diff3.c:909:30: alloc_fn: Storage is returned from allocation 
function "xmalloc".
diffutils-3.6/lib/xmalloc.c:41:11: alloc_fn: Storage is returned from 
allocation function "malloc".
diffutils-3.6/lib/xmalloc.c:41:11: var_assign: Assigning: "p" = "malloc(n)".
diffutils-3.6/lib/xmalloc.c:44:3: return_alloc: Returning allocated memory "p".
diffutils-3.6/src/diff3.c:909:30: var_assign: Assigning: "result" = 
"xmalloc(112UL)".
diffutils-3.6/src/diff3.c:961:3: return_alloc: Returning allocated memory 
"result".
diffutils-3.6/src/diff3.c:783: var_assign: Assigning: "result" = storage 
returned from "create_diff3_block(low[0], high[0], low[1], high[1], lowc, 
highc)".
diffutils-3.6/src/diff3.c:798: leaked_storage: Variable "result" going out of 
scope leaks the storage it points to.
#  796|                               D_LENARRAY (result, FILEC) + 
result_offset,
#  797|                               D_NUMLINES (ptr, FC)))
#  798|->         return 0;
#  799|         }
#  800|   

Error: RESOURCE_LEAK (CWE-772):
diffutils-3.6/src/diff3.c:783: alloc_fn: Storage is returned from allocation 
function "create_diff3_block".
diffutils-3.6/src/diff3.c:909:30: alloc_fn: Storage is returned from allocation 
function "xmalloc".
diffutils-3.6/lib/xmalloc.c:41:11: alloc_fn: Storage is returned from 
allocation function "malloc".
diffutils-3.6/lib/xmalloc.c:41:11: var_assign: Assigning: "p" = "malloc(n)".
diffutils-3.6/lib/xmalloc.c:44:3: return_alloc: Returning allocated memory "p".
diffutils-3.6/src/diff3.c:909:30: var_assign: Assigning: "result" = 
"xmalloc(112UL)".
diffutils-3.6/src/diff3.c:961:3: return_alloc: Returning allocated memory 
"result".
diffutils-3.6/src/diff3.c:783: var_assign: Assigning: "result" = storage 
returned from "create_diff3_block(low[0], high[0], low[1], high[1], lowc, 
highc)".
diffutils-3.6/src/diff3.c:827: leaked_storage: Variable "result" going out of 
scope leaks the storage it points to.
#  825|                                 D_LENARRAY (result, FILE0 + d) + 
result_offset,
#  826|                                 D_NUMLINES (ptr, FO)))
#  827|->           return 0;
#  828|   
#  829|           /* Catch the lines between here and the next diff */

Error: COMPILER_WARNING:
diffutils-3.6/src/diff3.c: scope_hint: In function 'process_diff'
diffutils-3.6/src/diff3.c:1091:15: warning: 'bptr' may be used uninitialized in 
this function [-Wmaybe-uninitialized]
#   *last_block = bptr;
#   ~~~~~~~~~~~~^~~~~~
# 1089|   
# 1090|     *block_list_end = NULL;
# 1091|->   *last_block = bptr;
# 1092|     return block_list;
# 1093|   }

Error: CLANG_WARNING:
diffutils-3.6/src/diff3.c:1091:15: warning: Assigned value is garbage or 
undefined
#  *last_block = bptr;
#              ^
diffutils-3.6/src/diff3.c:276:10: note: Assuming the condition is false
#  while ((c = getopt_long (argc, argv, "aeimvx3AEL:TX", longopts, 0)) != -1)
#         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diffutils-3.6/src/diff3.c:276:3: note: Loop condition is false. Execution 
continues on line 343
#  while ((c = getopt_long (argc, argv, "aeimvx3AEL:TX", longopts, 0)) != -1)
#  ^
diffutils-3.6/src/diff3.c:348:7: note: Left side of '||' is false
#  if (incompat > 1  /* Ensure at most one of -AeExX3.  */
#      ^
diffutils-3.6/src/diff3.c:348:7: note: Left side of '||' is false
diffutils-3.6/src/diff3.c:350:21: note: Left side of '&&' is false
#      || (tag_count && ! flagging)) /* -L requires one of -AEX.  */
#                    ^
diffutils-3.6/src/diff3.c:353:3: note: Taking false branch
#  if (argc - optind != 3)
#  ^
diffutils-3.6/src/diff3.c:363:3: note: Loop condition is true.  Entering loop 
body
#  for (i = tag_count; i < 3; i++)
#  ^
diffutils-3.6/src/diff3.c:363:3: note: Loop condition is true.  Entering loop 
body
diffutils-3.6/src/diff3.c:363:3: note: Loop condition is true.  Entering loop 
body
diffutils-3.6/src/diff3.c:363:3: note: Loop condition is false. Execution 
continues on line 382
diffutils-3.6/src/diff3.c:384:3: note: Taking false branch
#  if (STREQ (file[common], "-"))
#  ^
diffutils-3.6/src/diff3.c:398:3: note: Loop condition is true.  Entering loop 
body
#  for (i = 0; i < 3; i++)
#  ^
diffutils-3.6/src/diff3.c:398:3: note: Loop condition is true.  Entering loop 
body
diffutils-3.6/src/diff3.c:398:3: note: Loop condition is true.  Entering loop 
body
diffutils-3.6/src/diff3.c:398:3: note: Loop condition is false. Execution 
continues on line 401
diffutils-3.6/src/diff3.c:401:3: note: Loop condition is true.  Entering loop 
body
#  for (i = 0; i < 3; i++)
#  ^
diffutils-3.6/src/diff3.c:402:5: note: Taking true branch
#    if (! STREQ (file[i], "-"))
#    ^
diffutils-3.6/src/diff3.c:404:6: note: Assuming the condition is false
#        if (stat (file[i], &statb) < 0)
#            ^~~~~~~~~~~~~~~~~~~~~~~~~~
diffutils-3.6/src/diff3.c:404:2: note: Taking false branch
#        if (stat (file[i], &statb) < 0)
#        ^
diffutils-3.6/src/diff3.c:406:7: note: Taking false branch
#        else if (S_ISDIR (statb.st_mode))
#             ^
diffutils-3.6/src/diff3.c:401:3: note: Loop condition is true.  Entering loop 
body
#  for (i = 0; i < 3; i++)
#  ^
diffutils-3.6/src/diff3.c:402:5: note: Taking true branch
#    if (! STREQ (file[i], "-"))
#    ^
diffutils-3.6/src/diff3.c:404:6: note: Assuming the condition is false
#        if (stat (file[i], &statb) < 0)
#            ^~~~~~~~~~~~~~~~~~~~~~~~~~
diffutils-3.6/src/diff3.c:404:2: note: Taking false branch
#        if (stat (file[i], &statb) < 0)
#        ^
diffutils-3.6/src/diff3.c:406:7: note: Taking false branch
#        else if (S_ISDIR (statb.st_mode))
#             ^
diffutils-3.6/src/diff3.c:401:3: note: Loop condition is true.  Entering loop 
body
#  for (i = 0; i < 3; i++)
#  ^
diffutils-3.6/src/diff3.c:402:5: note: Taking true branch
#    if (! STREQ (file[i], "-"))
#    ^
diffutils-3.6/src/diff3.c:404:6: note: Assuming the condition is false
#        if (stat (file[i], &statb) < 0)
#            ^~~~~~~~~~~~~~~~~~~~~~~~~~
diffutils-3.6/src/diff3.c:404:2: note: Taking false branch
#        if (stat (file[i], &statb) < 0)
#        ^
diffutils-3.6/src/diff3.c:406:7: note: Taking false branch
#        else if (S_ISDIR (statb.st_mode))
#             ^
diffutils-3.6/src/diff3.c:401:3: note: Loop condition is false. Execution 
continues on line 412
#  for (i = 0; i < 3; i++)
#  ^
diffutils-3.6/src/diff3.c:420:13: note: Calling 'process_diff'
#  thread1 = process_diff (file[rev_mapping[FILE1]], commonname, &last_block, 
&b1);
#            
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diffutils-3.6/src/diff3.c:999:3: note: 'bptr' declared without an initial value
#  struct diff_block *bptr IF_LINT (= NULL);
#  ^~~~~~~~~~~~~~~~~~~~~~~
diffutils-3.6/src/diff3.c:1008:10: note: Assuming 'scan_diff' is >= 'diff_limit'
#  while (scan_diff < diff_limit)
#         ^~~~~~~~~~~~~~~~~~~~~~
diffutils-3.6/src/diff3.c:1008:3: note: Loop condition is false. Execution 
continues on line 1090
#  while (scan_diff < diff_limit)
#  ^
diffutils-3.6/src/diff3.c:1091:15: note: Assigned value is garbage or undefined
#  *last_block = bptr;
#              ^ ~~~~
# 1089|   
# 1090|     *block_list_end = NULL;
# 1091|->   *last_block = bptr;
# 1092|     return block_list;
# 1093|   }

Error: CLANG_WARNING:
diffutils-3.6/src/diff3.c:1458:10: warning: Array access results in a null 
pointer dereference
#                  cp = D_RELNUM (ptr, realfile, line);
#                       ^
diffutils-3.6/src/diff3.c:109:3: note: expanded from macro 'D_RELNUM'
#  ((diff)->lines[filenum][linenum])
#  ^
diffutils-3.6/src/diff3.c:276:10: note: Assuming the condition is false
#  while ((c = getopt_long (argc, argv, "aeimvx3AEL:TX", longopts, 0)) != -1)
#         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diffutils-3.6/src/diff3.c:276:3: note: Loop condition is false. Execution 
continues on line 343
#  while ((c = getopt_long (argc, argv, "aeimvx3AEL:TX", longopts, 0)) != -1)
#  ^
diffutils-3.6/src/diff3.c:348:7: note: Left side of '||' is false
#  if (incompat > 1  /* Ensure at most one of -AeExX3.  */
#      ^
diffutils-3.6/src/diff3.c:348:7: note: Left side of '||' is false
diffutils-3.6/src/diff3.c:350:21: note: Left side of '&&' is false
#      || (tag_count && ! flagging)) /* -L requires one of -AEX.  */
#                    ^
diffutils-3.6/src/diff3.c:353:3: note: Taking false branch
#  if (argc - optind != 3)
#  ^
diffutils-3.6/src/diff3.c:363:3: note: Loop condition is true.  Entering loop 
body
#  for (i = tag_count; i < 3; i++)
#  ^
diffutils-3.6/src/diff3.c:363:3: note: Loop condition is true.  Entering loop 
body
diffutils-3.6/src/diff3.c:363:3: note: Loop condition is true.  Entering loop 
body
diffutils-3.6/src/diff3.c:363:3: note: Loop condition is false. Execution 
continues on line 382
diffutils-3.6/src/diff3.c:384:3: note: Taking false branch
#  if (STREQ (file[common], "-"))
#  ^
diffutils-3.6/src/diff3.c:398:3: note: Loop condition is true.  Entering loop 
body
#  for (i = 0; i < 3; i++)
#  ^
diffutils-3.6/src/diff3.c:398:3: note: Loop condition is true.  Entering loop 
body
diffutils-3.6/src/diff3.c:398:3: note: Loop condition is true.  Entering loop 
body
diffutils-3.6/src/diff3.c:398:3: note: Loop condition is false. Execution 
continues on line 401
diffutils-3.6/src/diff3.c:401:3: note: Loop condition is true.  Entering loop 
body
#  for (i = 0; i < 3; i++)
#  ^
diffutils-3.6/src/diff3.c:402:5: note: Taking true branch
#    if (! STREQ (file[i], "-"))
#    ^
diffutils-3.6/src/diff3.c:404:6: note: Assuming the condition is false
#        if (stat (file[i], &statb) < 0)
#            ^~~~~~~~~~~~~~~~~~~~~~~~~~
diffutils-3.6/src/diff3.c:404:2: note: Taking false branch
#        if (stat (file[i], &statb) < 0)
#        ^
diffutils-3.6/src/diff3.c:406:7: note: Taking false branch
#        else if (S_ISDIR (statb.st_mode))
#             ^
diffutils-3.6/src/diff3.c:401:3: note: Loop condition is true.  Entering loop 
body
#  for (i = 0; i < 3; i++)
#  ^
diffutils-3.6/src/diff3.c:402:5: note: Taking true branch
#    if (! STREQ (file[i], "-"))
#    ^
diffutils-3.6/src/diff3.c:404:6: note: Assuming the condition is false
#        if (stat (file[i], &statb) < 0)
#            ^~~~~~~~~~~~~~~~~~~~~~~~~~
diffutils-3.6/src/diff3.c:404:2: note: Taking false branch
#        if (stat (file[i], &statb) < 0)
#        ^
diffutils-3.6/src/diff3.c:406:7: note: Taking false branch
#        else if (S_ISDIR (statb.st_mode))
#             ^
diffutils-3.6/src/diff3.c:401:3: note: Loop condition is true.  Entering loop 
body
#  for (i = 0; i < 3; i++)
#  ^
diffutils-3.6/src/diff3.c:402:5: note: Taking true branch
#    if (! STREQ (file[i], "-"))
#    ^
diffutils-3.6/src/diff3.c:404:6: note: Assuming the condition is false
#        if (stat (file[i], &statb) < 0)
#            ^~~~~~~~~~~~~~~~~~~~~~~~~~
diffutils-3.6/src/diff3.c:404:2: note: Taking false branch
#        if (stat (file[i], &statb) < 0)
#        ^
diffutils-3.6/src/diff3.c:406:7: note: Taking false branch
#        else if (S_ISDIR (statb.st_mode))
#             ^
diffutils-3.6/src/diff3.c:401:3: note: Loop condition is false. Execution 
continues on line 412
#  for (i = 0; i < 3; i++)
#  ^
diffutils-3.6/src/diff3.c:426:11: note: Calling 'make_3way_diff'
#  diff3 = make_3way_diff (thread0, thread1);
#          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diffutils-3.6/src/diff3.c:647:10: note: Assuming the condition is false
#  while (current[0] || current[1])
#         ^~~~~~~~~~
diffutils-3.6/src/diff3.c:647:10: note: Left side of '||' is false
diffutils-3.6/src/diff3.c:647:3: note: Loop condition is true.  Entering loop 
body
#  while (current[0] || current[1])
#  ^
diffutils-3.6/src/diff3.c:652:7: note: Taking true branch
#      if (!current[0])
#      ^
diffutils-3.6/src/diff3.c:680:7: note: Left side of '&&' is false
#             && D_LOWLINE (other_diff, FC) <= high_water_mark + 1)
#             ^
diffutils-3.6/src/diff3.c:717:18: note: Calling 'using_to_diff3_block'
#      tmpblock = using_to_diff3_block (using, last_using,
#                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diffutils-3.6/src/diff3.c:770:3: note: Loop condition is true.  Entering loop 
body
#  for (d = 0; d < 2; d++)
#  ^
diffutils-3.6/src/diff3.c:771:5: note: Taking false branch
#    if (using[d])
#    ^
diffutils-3.6/src/diff3.c:770:3: note: Loop condition is true.  Entering loop 
body
#  for (d = 0; d < 2; d++)
#  ^
diffutils-3.6/src/diff3.c:771:5: note: Taking true branch
#    if (using[d])
#    ^
diffutils-3.6/src/diff3.c:770:3: note: Loop condition is false. Execution 
continues on line 783
#  for (d = 0; d < 2; d++)
#  ^
diffutils-3.6/src/diff3.c:783:12: note: Calling 'create_diff3_block'
#  result = create_diff3_block (low[0], high[0], low[1], high[1], lowc, highc);
#           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diffutils-3.6/src/diff3.c:912:3: note: Assuming pointer value is null
#  D3_TYPE (result) = ERROR;
#  ^~~~~~~~~~~~~~~~~~~~~~~~
diffutils-3.6/src/diff3.c:123:23: note: expanded from macro 'D3_TYPE'
##define D3_TYPE(diff)   ((diff)->correspond)
#                        ^
diffutils-3.6/src/diff3.c:925:7: note: Assuming 'numlines' is 0
#  if (numlines)
#      ^~~~~~~~
diffutils-3.6/src/diff3.c:925:3: note: Taking false branch
#  if (numlines)
#  ^
diffutils-3.6/src/diff3.c:937:7: note: Assuming 'numlines' is 0
#  if (numlines)
#      ^~~~~~~~
diffutils-3.6/src/diff3.c:937:3: note: Taking false branch
#  if (numlines)
#  ^
diffutils-3.6/src/diff3.c:949:7: note: Assuming 'numlines' is 0
#  if (numlines)
#      ^~~~~~~~
diffutils-3.6/src/diff3.c:949:3: note: Taking false branch
#  if (numlines)
#  ^
diffutils-3.6/src/diff3.c:783:12: note: Returning from 'create_diff3_block'
#  result = create_diff3_block (low[0], high[0], low[1], high[1], lowc, highc);
#           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diffutils-3.6/src/diff3.c:788:3: note: Loop condition is true.  Entering loop 
body
#  for (d = 0; d < 2; d++)
#  ^
diffutils-3.6/src/diff3.c:789:5: note: Loop condition is false. Execution 
continues on line 788
#    for (ptr = using[d]; ptr; ptr = D_NEXT (ptr))
#    ^
diffutils-3.6/src/diff3.c:788:3: note: Loop condition is true.  Entering loop 
body
#  for (d = 0; d < 2; d++)
#  ^
diffutils-3.6/src/diff3.c:789:5: note: Loop condition is true.  Entering loop 
body
#    for (ptr = using[d]; ptr; ptr = D_NEXT (ptr))
#    ^
diffutils-3.6/src/diff3.c:793:2: note: Taking false branch
#        if (!copy_stringlist (D_LINEARRAY (ptr, FC),
#        ^
diffutils-3.6/src/diff3.c:789:5: note: Loop condition is false. Execution 
continues on line 788
#    for (ptr = using[d]; ptr; ptr = D_NEXT (ptr))
#    ^
diffutils-3.6/src/diff3.c:788:3: note: Loop condition is false. Execution 
continues on line 804
#  for (d = 0; d < 2; d++)
#  ^
diffutils-3.6/src/diff3.c:804:3: note: Loop condition is true.  Entering loop 
body
#  for (d = 0; d < 2; d++)
#  ^
diffutils-3.6/src/diff3.c:810:15: note: '?' condition is false
#           i + lo < (u ? D_LOWLINE (u, FO) : hi + 1);
#                     ^
diffutils-3.6/src/diff3.c:809:7: note: Loop condition is false. Execution 
continues on line 817
#      for (i = 0;
#      ^
diffutils-3.6/src/diff3.c:817:7: note: Loop condition is false. Execution 
continues on line 804
#      for (ptr = u; ptr; ptr = D_NEXT (ptr))
#      ^
diffutils-3.6/src/diff3.c:804:3: note: Loop condition is true.  Entering loop 
body
#  for (d = 0; d < 2; d++)
#  ^
diffutils-3.6/src/diff3.c:810:15: note: '?' condition is true
#           i + lo < (u ? D_LOWLINE (u, FO) : hi + 1);
#                     ^
diffutils-3.6/src/diff3.c:809:7: note: Loop condition is false. Execution 
continues on line 817
#      for (i = 0;
#      ^
diffutils-3.6/src/diff3.c:817:7: note: Loop condition is true.  Entering loop 
body
#      for (ptr = u; ptr; ptr = D_NEXT (ptr))
#      ^
diffutils-3.6/src/diff3.c:822:4: note: Taking false branch
#          if (!copy_stringlist (D_LINEARRAY (ptr, FO),
#          ^
diffutils-3.6/src/diff3.c:831:4: note: Loop condition is false. Execution 
continues on line 817
#          for (i = D_HIGHLINE (ptr, FO) + 1 - lo;
#          ^
diffutils-3.6/src/diff3.c:817:7: note: Loop condition is false. Execution 
continues on line 804
#      for (ptr = u; ptr; ptr = D_NEXT (ptr))
#      ^
diffutils-3.6/src/diff3.c:804:3: note: Loop condition is false. Execution 
continues on line 843
#  for (d = 0; d < 2; d++)
#  ^
diffutils-3.6/src/diff3.c:843:3: note: Taking true branch
#  if (!using[0])
#  ^
diffutils-3.6/src/diff3.c:717:18: note: Returning from 'using_to_diff3_block'
#      tmpblock = using_to_diff3_block (using, last_using,
#                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diffutils-3.6/src/diff3.c:721:7: note: Taking false branch
#      if (!tmpblock)
#      ^
diffutils-3.6/src/diff3.c:647:10: note: Left side of '||' is false
#  while (current[0] || current[1])
#         ^
diffutils-3.6/src/diff3.c:647:3: note: Loop condition is false. Execution 
continues on line 731
#  while (current[0] || current[1])
#  ^
diffutils-3.6/src/diff3.c:426:11: note: Returning from 'make_3way_diff'
#  diff3 = make_3way_diff (thread0, thread1);
#          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diffutils-3.6/src/diff3.c:431:7: note: Assuming 'edscript' is 0
#  if (edscript)
#      ^~~~~~~~
diffutils-3.6/src/diff3.c:431:3: note: Taking false branch
#  if (edscript)
#  ^
diffutils-3.6/src/diff3.c:435:12: note: Assuming 'merge' is 0
#  else if (merge)
#           ^~~~~
diffutils-3.6/src/diff3.c:435:8: note: Taking false branch
#  else if (merge)
#       ^
diffutils-3.6/src/diff3.c:446:7: note: Calling 'output_diff3'
#      output_diff3 (stdout, diff3, mapping, rev_mapping);
#      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diffutils-3.6/src/diff3.c:1399:29: note: Assuming 'initial_tab' is 0
#  char const *line_prefix = initial_tab ? "\t" : "  ";
#                            ^~~~~~~~~~~
diffutils-3.6/src/diff3.c:1399:29: note: '?' condition is false
diffutils-3.6/src/diff3.c:1401:8: note: Value assigned to 'ptr'
#  for (ptr = diff; ptr; ptr = D_NEXT (ptr))
#       ^~~~~~~~~~
diffutils-3.6/src/diff3.c:1401:3: note: Loop condition is true.  Entering loop 
body
#  for (ptr = diff; ptr; ptr = D_NEXT (ptr))
#  ^
diffutils-3.6/src/diff3.c:1405:7: note: Control jumps to 'case DIFF_2ND:'  at 
line 1413
#      switch (ptr->correspond)
#      ^
diffutils-3.6/src/diff3.c:1419:16: note: Assuming 'oddoneout' is equal to 0
#          dontprint = oddoneout == 0;
#                      ^~~~~~~~~~~~~~
diffutils-3.6/src/diff3.c:1420:4: note:  Execution continues on line 1424
#          break;
#          ^
diffutils-3.6/src/diff3.c:1427:7: note: Loop condition is true.  Entering loop 
body
#      for (i = 0; i < 3;
#      ^
diffutils-3.6/src/diff3.c:1437:4: note: Control jumps to 'case 0:'  at line 1442
#          switch (lowt - hight)
#          ^
diffutils-3.6/src/diff3.c:1444:8: note:  Execution continues on line 1450
#              break;
#              ^
diffutils-3.6/src/diff3.c:1450:4: note: Taking false branch
#          if (i == dontprint) continue;
#          ^
diffutils-3.6/src/diff3.c:1452:4: note: Taking true branch
#          if (lowt <= hight)
#          ^
diffutils-3.6/src/diff3.c:1458:10: note: Array access results in a null pointer 
dereference
#                  cp = D_RELNUM (ptr, realfile, line);
#                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diffutils-3.6/src/diff3.c:109:3: note: expanded from macro 'D_RELNUM'
#  ((diff)->lines[filenum][linenum])
#  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# 1456|                 {
# 1457|                   fputs (line_prefix, outputfile);
# 1458|->                 cp = D_RELNUM (ptr, realfile, line);
# 1459|                   length = D_RELLEN (ptr, realfile, line);
# 1460|                   fwrite (cp, sizeof (char), length, outputfile);

Error: DEADCODE (CWE-561):
diffutils-3.6/src/ifdef.c:318: cond_at_least: Condition "(unsigned int)c - 48U 
<= 9U", taking false branch. Now the value of "c" is at least 58.
diffutils-3.6/src/ifdef.c:320: at_least: At condition "c == '.'", the value of 
"c" must be at least 58.
diffutils-3.6/src/ifdef.c:320: dead_error_condition: The condition "c == '.'" 
cannot be true.
diffutils-3.6/src/ifdef.c:321: dead_error_line: Execution cannot reach this 
statement: "while ((unsigned int)(c = *...".
#  319|       c = *f++;
#  320|     if (c == '.')
#  321|->     while (ISDIGIT (c = *f++))
#  322|         continue;
#  323|     c1 = *f++;

Error: RESOURCE_LEAK (CWE-772):
diffutils-3.6/src/ifdef.c:368: alloc_fn: Storage is returned from allocation 
function "xmalloc".
diffutils-3.6/lib/xmalloc.c:41:11: alloc_fn: Storage is returned from 
allocation function "malloc".
diffutils-3.6/lib/xmalloc.c:41:11: var_assign: Assigning: "p" = "malloc(n)".
diffutils-3.6/lib/xmalloc.c:44:3: return_alloc: Returning allocated memory "p".
diffutils-3.6/src/ifdef.c:368: var_assign: Assigning: "format" = storage 
returned from "xmalloc(spec_prefix_len + pI_len + 2UL)".
diffutils-3.6/src/ifdef.c:370: var_assign: Assigning: "p" = "format".
diffutils-3.6/src/ifdef.c:371: noescape: Resource "format" is not freed or 
pointed-to in "memcpy". [Note: The source code implementation of the function 
has been overridden by a builtin model.]
diffutils-3.6/src/ifdef.c:372: noescape: Resource "format + spec_prefix_len" is 
not freed or pointed-to in "memcpy". [Note: The source code implementation of 
the function has been overridden by a builtin model.]
diffutils-3.6/src/ifdef.c:375: noescape: Resource "format" is not freed or 
pointed-to in "fprintf". [Note: The source code implementation of the function 
has been overridden by a builtin model.]
diffutils-3.6/src/ifdef.c:379: leaked_storage: Variable "p" going out of scope 
leaks the storage it points to.
diffutils-3.6/src/ifdef.c:379: leaked_storage: Variable "format" going out of 
scope leaks the storage it points to.
#  377|             free (format);
#  378|   #endif
#  379|->         }
#  380|         }
#  381|         break;

Error: COMPILER_WARNING:
diffutils-3.6/src/sdiff.c: scope_hint: In function 'edit'
diffutils-3.6/src/sdiff.c:868:11: warning: 'cmd1' may be used uninitialized in 
this function [-Wmaybe-uninitialized]
#       int cmd1 IF_LINT (= 0);
#           ^~~~
#  866|       {
#  867|         int cmd0 IF_LINT (= 0);
#  868|->       int cmd1 IF_LINT (= 0);
#  869|         bool gotcmd = false;
#  870|   

Error: UNINIT (CWE-457):
diffutils-3.6/src/sdiff.c:868: var_decl: Declaring variable "cmd1" without 
initializer.
diffutils-3.6/src/sdiff.c:965: uninit_use: Using uninitialized value "cmd1".
#  963|               perror_fatal (tmpname);
#  964|   
#  965|->           switch (cmd1)
#  966|               {
#  967|               case 'd':

Error: SECURE_TEMP (CWE-377):
diffutils-3.6/src/sdiff.c:1169: secure_temp: Calling "mkstemp" without securely 
setting umask first.
# 1167|     int fd;
# 1168|     sprintf (buf, "%s/sdiffXXXXXX", dir);
# 1169|->   fd = mkstemp (buf);
# 1170|     if (0 <= fd)
# 1171|       tmpname = buf;

Error: RESOURCE_LEAK (CWE-772):
diffutils-3.6/src/sdiff.c:1166: alloc_fn: Storage is returned from allocation 
function "xmalloc".
diffutils-3.6/lib/xmalloc.c:41:11: alloc_fn: Storage is returned from 
allocation function "malloc".
diffutils-3.6/lib/xmalloc.c:41:11: var_assign: Assigning: "p" = "malloc(n)".
diffutils-3.6/lib/xmalloc.c:44:3: return_alloc: Returning allocated memory "p".
diffutils-3.6/src/sdiff.c:1166: var_assign: Assigning: "buf" = storage returned 
from "xmalloc(strlen(dir) + 1UL + 5UL + 6UL + 1UL)".
diffutils-3.6/src/sdiff.c:1168: noescape: Resource "buf" is not freed or 
pointed-to in "sprintf". [Note: The source code implementation of the function 
has been overridden by a builtin model.]
diffutils-3.6/src/sdiff.c:1169: noescape: Resource "buf" is not freed or 
pointed-to in "mkstemp".
diffutils-3.6/src/sdiff.c:1172: leaked_storage: Variable "buf" going out of 
scope leaks the storage it points to.
# 1170|     if (0 <= fd)
# 1171|       tmpname = buf;
# 1172|->   return fd;
# 1173|   }

Error: RESOURCE_LEAK (CWE-772):
diffutils-3.6/src/util.c:594: alloc_fn: Storage is returned from allocation 
function "xstrdup".
diffutils-3.6/lib/xmalloc.c:121:3: alloc_fn: Storage is returned from 
allocation function "xmemdup".
diffutils-3.6/lib/xmalloc.c:113:3: alloc_fn: Storage is returned from 
allocation function "xmalloc".
diffutils-3.6/lib/xmalloc.c:41:11: alloc_fn: Storage is returned from 
allocation function "malloc".
diffutils-3.6/lib/xmalloc.c:41:11: var_assign: Assigning: "p" = "malloc(n)".
diffutils-3.6/lib/xmalloc.c:44:3: return_alloc: Returning allocated memory "p".
diffutils-3.6/lib/xmalloc.c:113:3: identity_transfer: Passing "xmalloc(s)" as 
argument 1 to function "memcpy", which returns that argument. [Note: The source 
code implementation of the function has been overridden by a builtin model.]
diffutils-3.6/lib/xmalloc.c:113:3: return_alloc_fn: Directly returning storage 
allocated by "memcpy".
diffutils-3.6/lib/xmalloc.c:121:3: return_alloc_fn: Directly returning storage 
allocated by "xmemdup".
diffutils-3.6/src/util.c:594: var_assign: Assigning: "color_buf" = storage 
returned from "xstrdup(p)".
diffutils-3.6/src/util.c:594: var_assign: Assigning: "buf" = "color_buf".
diffutils-3.6/src/util.c:702: leaked_storage: Variable "buf" going out of scope 
leaks the storage it points to.
diffutils-3.6/src/util.c:702: leaked_storage: Variable "color_buf" going out of 
scope leaks the storage it points to.
#  700|         colors_enabled = false;
#  701|       }
#  702|-> }
#  703|   
#  704|   static void

Reply via email to