From 0dc4e4d5ae4aa82b2992f68fed4b94ebc18cddce Mon Sep 17 00:00:00 2001 From: rocky Date: Mon, 5 Mar 2007 11:18:49 +0000 Subject: [PATCH] Set errno=0 before calling strtol(). bug #18131 --- example/cdchange.c | 5 +++-- lib/driver/image/cdrdao.c | 7 ++++--- lib/iso9660/iso9660.c | 7 ++++--- src/cd-paranoia/cd-paranoia.c | 3 ++- 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/example/cdchange.c b/example/cdchange.c index a6d9f22f..9af936a8 100644 --- a/example/cdchange.c +++ b/example/cdchange.c @@ -1,7 +1,7 @@ /* - $Id: cdchange.c,v 1.2 2006/01/24 00:53:19 rocky Exp $ + $Id: cdchange.c,v 1.3 2007/03/05 11:18:49 rocky Exp $ - Copyright (C) 2005, 2006 Rocky Bernstein + Copyright (C) 2005, 2006, 2007 Rocky Bernstein This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -50,6 +50,7 @@ main(int argc, const char *argv[]) if (argc > 1) { p_cdio = cdio_open (argv[1], DRIVER_DEVICE); if (argc > 2) { + errno = 0; i_sleep = strtol(argv[2], (char **)NULL, 10); if (errno != 0) { printf("Invalid sleep parameter %s\n", argv[2]); diff --git a/lib/driver/image/cdrdao.c b/lib/driver/image/cdrdao.c index dcca109e..ae8ac025 100644 --- a/lib/driver/image/cdrdao.c +++ b/lib/driver/image/cdrdao.c @@ -1,7 +1,7 @@ /* - $Id: cdrdao.c,v 1.21 2006/02/27 10:27:39 flameeyes Exp $ + $Id: cdrdao.c,v 1.22 2007/03/05 11:18:49 rocky Exp $ - Copyright (C) 2004, 2005, 2006 Rocky Bernstein + Copyright (C) 2004, 2005, 2006, 2007 Rocky Bernstein toc reading routine adapted from cuetools Copyright (C) 2003 Svend Sanjay Sorensen @@ -25,7 +25,7 @@ (*.cue). */ -static const char _rcsid[] = "$Id: cdrdao.c,v 1.21 2006/02/27 10:27:39 flameeyes Exp $"; +static const char _rcsid[] = "$Id: cdrdao.c,v 1.22 2007/03/05 11:18:49 rocky Exp $"; #include "image.h" #include "cdio_assert.h" @@ -758,6 +758,7 @@ parse_tocfile (_img_private_t *cd, const char *psz_cue_name) if ( psz_field[0] == '#') { long int offset; psz_field++; + errno = 0; offset = strtol(psz_field, (char **)NULL, 10); if ( 0 != errno ) { cdio_log (log_level, diff --git a/lib/iso9660/iso9660.c b/lib/iso9660/iso9660.c index bc7ff939..843ca857 100644 --- a/lib/iso9660/iso9660.c +++ b/lib/iso9660/iso9660.c @@ -1,8 +1,8 @@ /* - $Id: iso9660.c,v 1.27 2006/09/26 18:07:59 flameeyes Exp $ + $Id: iso9660.c,v 1.28 2007/03/05 11:18:49 rocky Exp $ Copyright (C) 2000 Herbert Valerio Riedel - Copyright (C) 2003, 2004, 2005, 2006 Rocky Bernstein + Copyright (C) 2003, 2004, 2005, 2006, 2007 Rocky Bernstein This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -54,7 +54,7 @@ const char ISO_STANDARD_ID[] = {'C', 'D', '0', '0', '1'}; #include #endif -static const char _rcsid[] = "$Id: iso9660.c,v 1.27 2006/09/26 18:07:59 flameeyes Exp $"; +static const char _rcsid[] = "$Id: iso9660.c,v 1.28 2007/03/05 11:18:49 rocky Exp $"; /* Variables to hold debugger-helping enumerations */ enum iso_enum1_s iso_enums1; @@ -169,6 +169,7 @@ iso9660_get_dtime (const iso9660_dtime_t *idr_date, bool b_localtime, char num[10]; \ memcpy(num, p_ldate->LT_FIELD, sizeof(p_ldate->LT_FIELD)); \ num[sizeof(p_ldate->LT_FIELD)+1] = '\0'; \ + errno = 0; \ p_tm->TM_FIELD = strtol(num, \ (char **)NULL, 10)+ADD_CONSTANT; \ if (0 != errno) return false; \ diff --git a/src/cd-paranoia/cd-paranoia.c b/src/cd-paranoia/cd-paranoia.c index 003ce487..9f0a7452 100644 --- a/src/cd-paranoia/cd-paranoia.c +++ b/src/cd-paranoia/cd-paranoia.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2006 Rocky Bernstein + * Copyright (C) 2004, 2005, 2006, 2007 Rocky Bernstein * (C) 1998 Monty * * This program is free software; you can redistribute it and/or modify @@ -652,6 +652,7 @@ get_int_arg(char c, long int *pi_arg) " but not found. Option ignored\n", c); return false; } + errno = 0; i_arg = strtol(optarg, &p_end, 10); if (errno == ERANGE) { fprintf(stderr,