Le keskiviikkona 5. heinäkuuta 2023, 2.26.12 EEST James Almer a écrit :
> This ensures the requested amount of bytes is read.

You're moving the problem though. Now, you may read more than necessary (and 
block longer than necessary) due to stdio internal buffering, which you did not 
disable.

> Also remove /dev/random as it's no longer necessary.
> 
> Signed-off-by: James Almer <jamr...@gmail.com>
> ---
>  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();
>  }


-- 
雷米‧德尼-库尔蒙
http://www.remlab.net/



_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to