PATCH: Avoid accidentally opening files for write
Nick Clifton
nickc@redhat.com
Tue Jun 7 09:18:00 GMT 2005
Hi Mark,
> Tested on x86_64-unknown-linux-gnu. OK to apply?
Have you tested this patch in both POSIX and non-POSIX build
environments ? Given your comments with the original posting I would
assume so, but it would be nice to have that confirmed. Also with a
patch to a generic part of BFD it would be good if you could also test
with a --enable-targets=all build, just to make sure.
> 2005-06-06 Mark Mitchell <mark@codesourcery.com>
>
> * opncls.c (bfd_fopen): New API.
> (bfd_openr): Use it.
> (bfd_fdopenr): Likewise.
> * bfd-in2.h: Regenerated.
The bfd part of your patch is approved.
I do have one other concern however:
> SYNOPSIS
> ! bfd *bfd_fopen (const char *filename, const char *target,
> ! const char *mode, int fd);
>
> DESCRIPTION
> ! Open the file @var{filename} with the target @var{target}.
> ! Return a pointer to the created BFD. If @var{fd} is not -1,
> ! then <<fdopen>> is used to open the file; otherwise, <<fopen>>
> ! is used. @var{mode} is passed directly to <<fopen>> or
> ! <<fdopen>>.
...
> ! if (strchr (mode, '+'))
> ! nbfd->direction = both_direction;
> ! else if (strchr (mode, 'r'))
> ! nbfd->direction = read_direction;
> ! else
> ! nbfd->direction = write_direction;
This assumes that the contents of 'mode' are well defined. Is this the
case for non-POSIX environments ? For example can we be sure that the
character 'R' is never used to indicate read-only status, or that an OS
might allow a file created with just "a" to have the newly-written-to
parts read back, effectively making "a" a read-and-write mode ? What I
am getting at is, should bfd_fopen() take an explicit extra parameter
which tells BFD whether this file is intended for reading, writing or both ?
Cheers
Nick
More information about the Binutils
mailing list