[FFmpeg-cvslog] avutil/random_seed: use fread() in read_random()
James Almer
git at videolan.org
Wed Jul 5 16:07:39 EEST 2023
ffmpeg | branch: master | James Almer <jamrial at gmail.com> | Tue Jul 4 19:37:04 2023 -0300| [7a1128ca07fa38836775168d002ff6bc55134023] | committer: James Almer
avutil/random_seed: use fread() in read_random()
This ensures the requested amount of bytes is read.
Also remove /dev/random as it's no longer necessary.
Signed-off-by: James Almer <jamrial at gmail.com>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=7a1128ca07fa38836775168d002ff6bc55134023
---
libavutil/random_seed.c | 23 ++++++++++++-----------
1 file changed, 12 insertions(+), 11 deletions(-)
diff --git a/libavutil/random_seed.c b/libavutil/random_seed.c
index 66dd504ef0..a51149235b 100644
--- a/libavutil/random_seed.c
+++ b/libavutil/random_seed.c
@@ -49,17 +49,20 @@
static int read_random(uint32_t *dst, const char *file)
{
#if HAVE_UNISTD_H
- int fd = avpriv_open(file, O_RDONLY);
- int err = -1;
+ FILE *fp = avpriv_fopen_utf8(file, "r");
+ size_t err;
- if (fd == -1)
- return -1;
- err = read(fd, dst, sizeof(*dst));
- close(fd);
+ if (!fp)
+ return AVERROR_UNKNOWN;
+ err = fread(dst, 1, sizeof(*dst), fp);
+ fclose(fp);
- return err;
+ if (err != sizeof(*dst))
+ return AVERROR_UNKNOWN;
+
+ return 0;
#else
- return -1;
+ return AVERROR(ENOSYS);
#endif
}
@@ -138,9 +141,7 @@ uint32_t av_get_random_seed(void)
return arc4random();
#endif
- if (read_random(&seed, "/dev/urandom") == sizeof(seed))
- return seed;
- if (read_random(&seed, "/dev/random") == sizeof(seed))
+ if (!read_random(&seed, "/dev/urandom"))
return seed;
return get_generic_seed();
}
More information about the ffmpeg-cvslog
mailing list