/* vms-misc.c -- BFD back-end for VMS/VAX (openVMS/VAX) and
EVAX (openVMS/Alpha) files.
- Copyright (C) 1996-2018 Free Software Foundation, Inc.
+ Copyright (C) 1996-2021 Free Software Foundation, Inc.
Miscellaneous functions.
Size is string size (size of record). */
char *
-_bfd_vms_save_sized_string (unsigned char *str, unsigned int size)
+_bfd_vms_save_sized_string (bfd *abfd, unsigned char *str, size_t size)
{
- char *newstr = bfd_malloc ((bfd_size_type) size + 1);
+ char *newstr;
+ if (size == (size_t) -1)
+ {
+ bfd_set_error (bfd_error_no_memory);
+ return NULL;
+ }
+ newstr = bfd_alloc (abfd, size + 1);
if (newstr == NULL)
return NULL;
- memcpy (newstr, (char *) str, (size_t) size);
+ memcpy (newstr, str, size);
newstr[size] = 0;
return newstr;
PTR points to size byte on entry. */
char *
-_bfd_vms_save_counted_string (unsigned char *ptr, unsigned int maxlen)
+_bfd_vms_save_counted_string (bfd *abfd, unsigned char *ptr, size_t maxlen)
{
- unsigned int len = *ptr++;
+ unsigned int len;
- if (len > maxlen)
+ if (maxlen == 0)
+ return NULL;
+ len = *ptr++;
+ if (len > maxlen - 1)
return NULL;
- return _bfd_vms_save_sized_string (ptr, len);
+ return _bfd_vms_save_sized_string (abfd, ptr, len);
}
\f
/* Object output routines. */
stolen from obj-vms.c. */
unsigned char *
-get_vms_time_string (void)
+get_vms_time_string (unsigned char *tbuf)
{
- static unsigned char tbuf[18];
#ifndef VMS
char *pnt;
time_t timeb;
void
vms_time_t_to_vms_time (time_t ut, unsigned int *hi, unsigned int *lo)
{
- unsigned short val[4];
- unsigned short tmp[4];
+ unsigned int val[4];
+ unsigned int tmp[4];
unsigned int carry;
int i;