[PATCH] Add support for atoll on HP-UX

Elia Pinto gitter.spiros at gmail.com
Wed Aug 10 10:00:00 MDT 2011


I am sorry but i haven't seen that in master atoll isn't used anymore.

So please discard this patch. Best regards

2011/8/10 Elia Pinto <gitter.spiros at gmail.com>:
> The patch for CVE-2011-2522 uses atoll()
> but HP-UX 11.00/PA, 11.11/PA, and 11.23/PA
> do not provide this function. Add a atoll
> replacement function for HP-UX.
> ---
>  lib/replace/README        |    1 +
>  lib/replace/libreplace.m4 |    2 +-
>  lib/replace/replace.c     |    7 +++++++
>  lib/replace/replace.h     |    5 +++++
>  lib/replace/wscript       |    2 +-
>  source3/configure.in      |    1 +
>  source3/wscript           |    2 +-
>  7 files changed, 17 insertions(+), 3 deletions(-)
>
> diff --git a/lib/replace/README b/lib/replace/README
> index bf4e67f..71e7f60 100644
> --- a/lib/replace/README
> +++ b/lib/replace/README
> @@ -72,6 +72,7 @@ link
>  readlink
>  symlink
>  realpath
> +atoll
>
>  Types:
>  bool
> diff --git a/lib/replace/libreplace.m4 b/lib/replace/libreplace.m4
> index 808d5d1..f11401a 100644
> --- a/lib/replace/libreplace.m4
> +++ b/lib/replace/libreplace.m4
> @@ -110,7 +110,7 @@ AC_CHECK_FUNCS(seteuid setresuid setegid setresgid chroot bzero strerror strerro
>  AC_CHECK_FUNCS(vsyslog setlinebuf mktime ftruncate chsize rename)
>  AC_CHECK_FUNCS(waitpid wait4 strlcpy strlcat initgroups memmove strdup)
>  AC_CHECK_FUNCS(pread pwrite strndup strcasestr strtok_r mkdtemp dup2 dprintf vdprintf)
> -AC_CHECK_FUNCS(isatty chown lchown link readlink symlink realpath)
> +AC_CHECK_FUNCS(isatty chown lchown link readlink symlink realpath atoll)
>  AC_CHECK_FUNCS(fdatasync,,[
>        # if we didn't find it, look in librt (Solaris hides it there...)
>        AC_CHECK_LIB(rt, fdatasync,
> diff --git a/lib/replace/replace.c b/lib/replace/replace.c
> index d9a96ff..6197a0a 100644
> --- a/lib/replace/replace.c
> +++ b/lib/replace/replace.c
> @@ -728,6 +728,13 @@ char *rep_realpath(const char *path, char *resolved_path)
>  }
>  #endif
>
> +#ifndef HAVE_ATOLL
> +/* Convert a string to a long long int.  */
> +long long int atoll (const char *nptr)
> +{
> +  return strtoll (nptr, (char **) NULL, 10);
> +}
> +#endif
>
>  #ifndef HAVE_MEMMEM
>  void *rep_memmem(const void *haystack, size_t haystacklen,
> diff --git a/lib/replace/replace.h b/lib/replace/replace.h
> index c081f23..c5f76b8 100644
> --- a/lib/replace/replace.h
> +++ b/lib/replace/replace.h
> @@ -266,6 +266,11 @@ int rep_symlink(const char *oldpath, const char *newpath);
>  char *rep_realpath(const char *path, char *resolved_path);
>  #endif
>
> +#ifndef HAVE_ATOLL
> +#define atoll rep_atoll
> +long long int rep_atoll(const char *nptr);
> +#endif
> +
>  #ifndef HAVE_LCHOWN
>  #define lchown rep_lchown
>  int rep_lchown(const char *fname,uid_t uid,gid_t gid);
> diff --git a/lib/replace/wscript b/lib/replace/wscript
> index c24d6e7..895faf3 100644
> --- a/lib/replace/wscript
> +++ b/lib/replace/wscript
> @@ -165,7 +165,7 @@ def configure(conf):
>     conf.CHECK_FUNCS('ftruncate chsize rename waitpid wait4 strlcpy strlcat')
>     conf.CHECK_FUNCS('initgroups pread pwrite strndup strcasestr')
>     conf.CHECK_FUNCS('strtok_r mkdtemp dup2 dprintf vdprintf isatty chown lchown')
> -    conf.CHECK_FUNCS('link readlink symlink realpath snprintf vsnprintf')
> +    conf.CHECK_FUNCS('link readlink symlink realpath atoll snprintf vsnprintf')
>     conf.CHECK_FUNCS('asprintf vasprintf setenv unsetenv strnlen strtoull __strtoull')
>     conf.CHECK_FUNCS('strtouq strtoll __strtoll strtoq')
>     #Some OS (ie. freebsd) return EINVAL if the convertion could not be done, it's not what we expect
> diff --git a/source3/configure.in b/source3/configure.in
> index af8285f..618835f 100644
> --- a/source3/configure.in
> +++ b/source3/configure.in
> @@ -1102,6 +1102,7 @@ AC_CHECK_FUNCS(shmget shm_open)
>  AC_CHECK_FUNCS(gettext dgettext)
>  AC_CHECK_FUNCS(bindtextdomain textdomain bind_textdomain_codeset)
>  AC_CHECK_FUNCS(strupr)
> +AC_CHECK_FUNCS(atoll)
>
>  # Find a method of generating a stack trace
>  AC_CHECK_HEADERS(execinfo.h libexc.h libunwind.h)
> diff --git a/source3/wscript b/source3/wscript
> index f7c12a8..c9a38e5 100644
> --- a/source3/wscript
> +++ b/source3/wscript
> @@ -161,7 +161,7 @@ def configure(conf):
>     conf.CHECK_FUNCS('memalign posix_memalign hstrerror')
>     conf.CHECK_FUNCS('shmget')
>     conf.CHECK_FUNCS_IN('shm_open', 'rt', checklibc=True)
> -    conf.CHECK_FUNCS('gettext dgettext bindtextdomain textdomain bind_textdomain_codeset')
> +    conf.CHECK_FUNCS('gettext dgettext bindtextdomain textdomain bind_textdomain_codeset atoll')
>     #FIXME: for some reason this one still fails
>     conf.CHECK_FUNCS_IN('yp_get_default_domain', 'nsl')
>     conf.CHECK_FUNCS_IN('dn_expand _dn_expand __dn_expand', 'resolv')
> --
> 1.6.3.3
>
>


More information about the samba-technical mailing list