Files
heimdal/lib/krb5
Jeffrey Altman 1b1ff8fdd5 krb5: crypto.c avoid realloc to trim memory allocation
decrypt_internal_derived(), decrypt_internal_enc_then_cksum(),
decrypt_internal(), and decrypt_internal_special() execute the
following pattern where 'p' is an allocation of size 'len'

  l = len - n
  memmove(p, p + n, l);
  result->data = realloc(p, l);
  if (result->data == NULL && l != 0) {
      free(p);
      return krb5_enomem(context);
  }
  result->length = l;

which when compiled by gcc 13.0.1-0.12.fc38 or gcc-13.0.1-0.13.fc39
generates the following warning

  warning: pointer 'p' may be used after 'realloc' [-Wuse-after-free]

The C language specification indicates that it is only safe to free()
the pointer passed to realloc() if errno is set to ENOMEM.  Yet the
warning is generated by the following pattern

  l = len - n
  memmove(p, p + n, l);
  errno = 0;
  result->data = realloc(p, l);
  if (result->data == NULL && l != 0) {
      if (errno == ENOMEM)
          free(p);
      return krb5_enomem(context);
  }
  result->length = l;

The value of performing the realloc() is questionable.  realloc()
in many cases will need to perform a second allocation of the
smaller size and then perform a memcpy() which will slow down
the operation without saving much memory.  The allocation is already
very small.

This change avoids the warning by removing the realloc() entirely.
2023-05-03 17:02:34 -04:00
..
2022-02-11 15:13:13 -06:00
2022-01-14 17:10:16 -06:00
2022-01-19 23:38:27 -06:00
2022-11-01 16:10:57 -05:00
2011-05-21 11:57:31 -07:00
2021-09-19 13:25:27 +10:00
2022-09-22 22:13:05 -04:00
2018-09-10 14:42:18 -04:00
2022-11-01 16:10:57 -05:00
2017-04-29 01:05:59 -04:00
2022-01-14 17:10:16 -06:00
2016-04-16 16:58:08 -05:00
2018-10-08 08:46:37 -04:00
2012-01-10 22:54:50 +01:00
2022-01-14 17:10:16 -06:00
2023-01-04 00:43:36 -06:00
2023-01-04 00:43:36 -06:00
2021-03-26 18:47:49 -05:00
2011-07-24 16:02:22 -07:00
2014-04-25 02:42:17 +02:00
2011-05-21 11:57:31 -07:00
2014-04-25 02:42:17 +02:00
2011-05-21 11:57:31 -07:00
2011-05-21 11:57:31 -07:00
2011-05-21 11:57:31 -07:00
2007-07-15 20:49:46 +00:00
2022-01-19 23:38:27 -06:00
2023-01-04 00:43:36 -06:00
2022-01-24 15:38:47 -06:00
2022-01-19 23:38:27 -06:00
2022-09-22 22:13:05 -04:00
2022-01-14 17:10:16 -06:00
2014-03-24 23:07:49 -05:00
2022-01-14 17:10:16 -06:00
2011-05-21 11:57:31 -07:00
2022-09-22 22:13:05 -04:00
2022-11-22 11:34:54 -05:00
2023-01-04 00:43:36 -06:00
2023-01-04 00:43:36 -06:00
2016-11-20 17:43:51 -06:00
2022-11-01 16:10:57 -05:00
2022-01-19 23:38:27 -06:00
2022-11-01 16:10:57 -05:00
2022-11-01 16:10:57 -05:00
2023-01-04 16:17:09 -06:00
2023-01-04 16:17:09 -06:00
2023-01-04 16:17:09 -06:00
2012-05-28 13:14:55 +01:00
2011-05-21 11:57:31 -07:00
2019-01-02 13:56:04 -05:00
2010-09-18 14:45:33 -07:00
2022-01-19 23:38:27 -06:00
2022-01-18 15:40:54 -06:00
2022-02-11 16:02:27 -06:00
2011-05-21 11:57:31 -07:00
2009-05-04 06:17:40 +00:00
2014-04-29 11:04:21 -06:00
2009-05-04 06:17:40 +00:00
2021-11-29 12:50:26 +11:00
2022-01-14 17:10:16 -06:00
2011-05-21 11:57:31 -07:00
2009-05-04 06:17:40 +00:00
2009-05-04 06:17:40 +00:00
2009-05-04 06:17:40 +00:00
2009-05-04 06:17:40 +00:00
2022-01-19 23:38:27 -06:00
2022-01-14 17:59:49 -06:00
2011-05-21 11:57:31 -07:00
2021-08-09 21:46:24 +10:00
2022-01-14 17:10:16 -06:00