Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
BIND
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Packages & Registries
Packages & Registries
Container Registry
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Joey Salazar
BIND
Commits
7507c182
Commit
7507c182
authored
May 22, 2015
by
Mark Andrews
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
all of NEED*PRINT are needed if %z is not supported
parent
c55a1da4
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
122 additions
and
98 deletions
+122
-98
configure
configure
+62
-58
configure.in
configure.in
+39
-39
lib/lwres/print.c
lib/lwres/print.c
+21
-1
No files found.
configure
View file @
7507c182
...
...
@@ -719,8 +719,6 @@ LWRES_PLATFORM_USEDECLSPEC
ISC_PLATFORM_USEDECLSPEC
ISC_PLATFORM_RLIMITTYPE
ISC_PLATFORM_HAVESYSUNH
ISC_PLATFORM_NEEDFPRINTF
ISC_PLATFORM_NEEDPRINTF
LWRES_PLATFORM_QUADFORMAT
ISC_PLATFORM_QUADFORMAT
DST_EXTRA_SRCS
...
...
@@ -729,9 +727,11 @@ USE_ISC_SPNEGO
ISC_EXTRA_SRCS
ISC_EXTRA_OBJS
LWRES_PLATFORM_NEEDVSNPRINTF
ISC_PLATFORM_NEEDVSNPRINTF
LWRES_PLATFORM_NEEDSPRINTF
ISC_PLATFORM_NEEDVSNPRINTF
ISC_PLATFORM_NEEDSPRINTF
ISC_PLATFORM_NEEDFPRINTF
ISC_PLATFORM_NEEDPRINTF
READLINE_LIB
ISC_PLATFORM_NEEDSTRCASESTR
ISC_PLATFORM_NEEDSTRLCAT
...
...
@@ -18625,8 +18625,14 @@ esac
ISC_PRINT_OBJS=
ISC_PRINT_SRCS=
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking sprintf" >&5
$as_echo_n "checking sprintf... " >&6; }
ISC_PLATFORM_NEEDPRINTF='#undef ISC_PLATFORM_NEEDPRINTF'
ISC_PLATFORM_NEEDFPRINTF='#undef ISC_PLATFORM_NEEDFPRINTF'
ISC_PLATFORM_NEEDSPRINTF='#undef ISC_PLATFORM_NEEDSPRINTF'
ISC_PLATFORM_NEEDVSNPRINTF='#undef ISC_PLATFORM_NEEDVSNPRINTF'
LWRES_PLATFORM_NEEDVSNPRINTF='#undef LWRES_PLATFORM_NEEDVSNPRINTF'
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking sprintf return type" >&5
$as_echo_n "checking sprintf return type... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
...
...
@@ -18641,25 +18647,22 @@ main ()
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: char *" >&5
$as_echo "char *" >&6; }
ISC_PRINT_OBJS="print.$O"
ISC_PRINT_SRCS="print.c"
ISC_PLATFORM_NEEDSPRINTF="#define ISC_PLATFORM_NEEDSPRINTF"
LWRES_PLATFORM_NEEDSPRINTF="#define LWRES_PLATFORM_NEEDSPRINTF"
else
ISC_PLATFORM_NEEDSPRINTF="#undef ISC_PLATFORM_NEEDSPRINTF"
LWRES_PLATFORM_NEEDSPRINTF="#undef LWRES_PLATFORM_NEEDSPRINTF"
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: int" >&5
$as_echo "int" >&6; }
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
ac_fn_c_check_func "$LINENO" "vsnprintf" "ac_cv_func_vsnprintf"
if test "x$ac_cv_func_vsnprintf" = xyes; then :
ISC_PLATFORM_NEEDVSNPRINTF="#undef ISC_PLATFORM_NEEDVSNPRINTF"
LWRES_PLATFORM_NEEDVSNPRINTF="#undef LWRES_PLATFORM_NEEDVSNPRINTF"
else
ISC_PRINT_OBJS="print.$O"
ISC_PRINT_SRCS="print.c"
...
...
@@ -18668,20 +18671,62 @@ else
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking printf for %z support" >&5
$as_echo_n "checking printf for %z support... " >&6; }
if test "$cross_compiling" = yes; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: assuming target platform supports %z" >&5
$as_echo "assuming target platform supports %z" >&6; }
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdio.h>
main() {
size_t j = 0;
char buf[100];
buf[0] = 0;
sprintf(buf, "%zu", j);
exit(strcmp(buf, "0") != 0);
}
_ACEOF
if ac_fn_c_try_run "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
ISC_PRINT_OBJS="print.$O"
ISC_PRINT_SRCS="print.c"
ISC_PLATFORM_NEEDPRINTF='#define ISC_PLATFORM_NEEDPRINTF 1'
ISC_PLATFORM_NEEDFPRINTF='#define ISC_PLATFORM_NEEDFPRINTF 1'
ISC_PLATFORM_NEEDFSRINTF='#define ISC_PLATFORM_NEEDSPRINTF 1'
ISC_PLATFORM_NEEDVSNPRINTF="#define ISC_PLATFORM_NEEDVSNPRINTF 1"
LWRES_PLATFORM_NEEDVSNPRINTF="#define LWRES_PLATFORM_NEEDVSNPRINTF 1"
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS $ISC_PRINT_OBJS"
ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS $ISC_PRINT_SRCS"
ac_fn_c_check_func "$LINENO" "strerror" "ac_cv_func_strerror"
if test "x$ac_cv_func_strerror" = xyes; then :
$as_echo "#define HAVE_STRERROR 1" >>confdefs.h
fi
#
# Use our own SPNEGO implementation?
#
...
...
@@ -18766,47 +18811,6 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking printf for %z support" >&5
$as_echo_n "checking printf for %z support... " >&6; }
if test "$cross_compiling" = yes; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: assuming target platform supports %z" >&5
$as_echo "assuming target platform supports %z" >&6; }
ISC_PLATFORM_NEEDPRINTF='#undef ISC_PLATFORM_NEEDPRINTF'
ISC_PLATFORM_NEEDFPRINTF='#undef ISC_PLATFORM_NEEDFPRINTF'
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdio.h>
main() {
/* Assume sprintf matches printf/fprintf. */
size_t j = 0;
char buf[100];
buf[0] = 0;
sprintf(buf, "%zu", j);
exit(strcmp(buf, "0") != 0);
}
_ACEOF
if ac_fn_c_try_run "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
ISC_PLATFORM_NEEDPRINTF='#undef ISC_PLATFORM_NEEDPRINTF'
ISC_PLATFORM_NEEDFPRINTF='#undef ISC_PLATFORM_NEEDFPRINTF'
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
ISC_PRINT_OBJS="print.$O"
ISC_PRINT_SRCS="print.c"
ISC_PLATFORM_NEEDPRINTF='#define ISC_PLATFORM_NEEDPRINTF 1'
ISC_PLATFORM_NEEDFPRINTF='#define ISC_PLATFORM_NEEDFPRINTF 1'
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
#
# Security Stuff
...
...
configure.in
View file @
7507c182
...
...
@@ -3248,40 +3248,65 @@ esac
ISC_PRINT_OBJS=
ISC_PRINT_SRCS=
AC_MSG_CHECKING(sprintf)
ISC_PLATFORM_NEEDPRINTF='#undef ISC_PLATFORM_NEEDPRINTF'
ISC_PLATFORM_NEEDFPRINTF='#undef ISC_PLATFORM_NEEDFPRINTF'
ISC_PLATFORM_NEEDSPRINTF='#undef ISC_PLATFORM_NEEDSPRINTF'
ISC_PLATFORM_NEEDVSNPRINTF='#undef ISC_PLATFORM_NEEDVSNPRINTF'
LWRES_PLATFORM_NEEDVSNPRINTF='#undef LWRES_PLATFORM_NEEDVSNPRINTF'
AC_MSG_CHECKING(sprintf return type)
AC_TRY_COMPILE([
#include <stdio.h>
],
[ char buf[2]; return(*sprintf(buf,"x"));],
[
[
AC_MSG_RESULT(char *)
ISC_PRINT_OBJS="print.$O"
ISC_PRINT_SRCS="print.c"
ISC_PLATFORM_NEEDSPRINTF="#define ISC_PLATFORM_NEEDSPRINTF"
LWRES_PLATFORM_NEEDSPRINTF="#define LWRES_PLATFORM_NEEDSPRINTF"
],
[ISC_PLATFORM_NEEDSPRINTF="#undef ISC_PLATFORM_NEEDSPRINTF"
LWRES_PLATFORM_NEEDSPRINTF="#undef LWRES_PLATFORM_NEEDSPRINTF"]
)
AC_SUBST(ISC_PLATFORM_NEEDSPRINTF)
AC_SUBST(LWRES_PLATFORM_NEEDSPRINTF)
],[AC_MSG_RESULT(int)])
AC_CHECK_FUNC(vsnprintf,
[ISC_PLATFORM_NEEDVSNPRINTF="#undef ISC_PLATFORM_NEEDVSNPRINTF"
LWRES_PLATFORM_NEEDVSNPRINTF="#undef LWRES_PLATFORM_NEEDVSNPRINTF"],
AC_CHECK_FUNC(vsnprintf, [],
[ISC_PRINT_OBJS="print.$O"
ISC_PRINT_SRCS="print.c"
ISC_PLATFORM_NEEDVSNPRINTF="#define ISC_PLATFORM_NEEDVSNPRINTF 1"
LWRES_PLATFORM_NEEDVSNPRINTF="#define LWRES_PLATFORM_NEEDVSNPRINTF 1"])
AC_MSG_CHECKING(printf for %z support)
AC_TRY_RUN([
#include <stdio.h>
main() {
size_t j = 0;
char buf[100];
buf[0] = 0;
sprintf(buf, "%zu", j);
exit(strcmp(buf, "0") != 0);
}
],
[AC_MSG_RESULT(yes)],
[AC_MSG_RESULT(no)
ISC_PRINT_OBJS="print.$O"
ISC_PRINT_SRCS="print.c"
ISC_PLATFORM_NEEDPRINTF='#define ISC_PLATFORM_NEEDPRINTF 1'
ISC_PLATFORM_NEEDFPRINTF='#define ISC_PLATFORM_NEEDFPRINTF 1'
ISC_PLATFORM_NEEDFSRINTF='#define ISC_PLATFORM_NEEDSPRINTF 1'
ISC_PLATFORM_NEEDVSNPRINTF="#define ISC_PLATFORM_NEEDVSNPRINTF 1"
LWRES_PLATFORM_NEEDVSNPRINTF="#define LWRES_PLATFORM_NEEDVSNPRINTF 1"],
[AC_MSG_RESULT(assuming target platform supports %z)])
AC_SUBST(ISC_PLATFORM_NEEDPRINTF)
AC_SUBST(ISC_PLATFORM_NEEDFPRINTF)
AC_SUBST(ISC_PLATFORM_NEEDSPRINTF)
AC_SUBST(ISC_PLATFORM_NEEDVSNPRINTF)
AC_SUBST(LWRES_PLATFORM_NEEDSPRINTF)
AC_SUBST(LWRES_PLATFORM_NEEDVSNPRINTF)
ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS $ISC_PRINT_OBJS"
ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS $ISC_PRINT_SRCS"
AC_CHECK_FUNC(strerror, AC_DEFINE(HAVE_STRERROR))
AC_SUBST(ISC_EXTRA_OBJS)
AC_SUBST(ISC_EXTRA_SRCS)
AC_CHECK_FUNC(strerror, AC_DEFINE(HAVE_STRERROR))
#
# Use our own SPNEGO implementation?
#
...
...
@@ -3345,31 +3370,6 @@ main() {
AC_SUBST(ISC_PLATFORM_QUADFORMAT)
AC_SUBST(LWRES_PLATFORM_QUADFORMAT)
AC_MSG_CHECKING([printf for %z support])
AC_TRY_RUN([
#include <stdio.h>
main() {
/* Assume sprintf matches printf/fprintf. */
size_t j = 0;
char buf[100];
buf[0] = 0;
sprintf(buf, "%zu", j);
exit(strcmp(buf, "0") != 0);
}
],
[AC_MSG_RESULT(yes)
ISC_PLATFORM_NEEDPRINTF='#undef ISC_PLATFORM_NEEDPRINTF'
ISC_PLATFORM_NEEDFPRINTF='#undef ISC_PLATFORM_NEEDFPRINTF'],
[AC_MSG_RESULT(no)
ISC_PRINT_OBJS="print.$O"
ISC_PRINT_SRCS="print.c"
ISC_PLATFORM_NEEDPRINTF='#define ISC_PLATFORM_NEEDPRINTF 1'
ISC_PLATFORM_NEEDFPRINTF='#define ISC_PLATFORM_NEEDFPRINTF 1'],
[AC_MSG_RESULT([assuming target platform supports %z])
ISC_PLATFORM_NEEDPRINTF='#undef ISC_PLATFORM_NEEDPRINTF'
ISC_PLATFORM_NEEDFPRINTF='#undef ISC_PLATFORM_NEEDFPRINTF'])
AC_SUBST(ISC_PLATFORM_NEEDPRINTF)
AC_SUBST(ISC_PLATFORM_NEEDFPRINTF)
#
# Security Stuff
...
...
lib/lwres/print.c
View file @
7507c182
...
...
@@ -66,6 +66,7 @@ lwres__print_vsnprintf(char *str, size_t size, const char *format, va_list ap) {
int
h
;
int
l
;
int
q
;
int
z
;
int
alt
;
int
zero
;
int
left
;
...
...
@@ -110,7 +111,7 @@ lwres__print_vsnprintf(char *str, size_t size, const char *format, va_list ap) {
/*
* Reset flags.
*/
dot
=
space
=
plus
=
left
=
zero
=
alt
=
h
=
l
=
q
=
0
;
dot
=
space
=
plus
=
left
=
zero
=
alt
=
h
=
l
=
q
=
z
=
0
;
width
=
precision
=
0
;
head
=
""
;
length
=
pad
=
zeropad
=
0
;
...
...
@@ -194,6 +195,10 @@ lwres__print_vsnprintf(char *str, size_t size, const char *format, va_list ap) {
format
++
;
}
goto
doint
;
case
'z'
:
z
=
1
;
format
++
;
goto
doint
;
case
'n'
:
case
'i'
:
case
'd'
:
...
...
@@ -216,6 +221,11 @@ lwres__print_vsnprintf(char *str, size_t size, const char *format, va_list ap) {
p
=
va_arg
(
ap
,
long
*
);
REQUIRE
(
p
!=
NULL
);
*
p
=
str
-
save
;
}
else
if
(
z
)
{
size_t
*
p
;
p
=
va_arg
(
ap
,
size_t
*
);
REQUIRE
(
p
!=
NULL
);
*
p
=
str
-
save
;
}
else
{
int
*
p
;
p
=
va_arg
(
ap
,
int
*
);
...
...
@@ -229,6 +239,8 @@ lwres__print_vsnprintf(char *str, size_t size, const char *format, va_list ap) {
tmpi
=
va_arg
(
ap
,
long
long
int
);
else
if
(
l
)
tmpi
=
va_arg
(
ap
,
long
int
);
else
if
(
z
)
tmpi
=
va_arg
(
ap
,
size_t
);
else
tmpi
=
va_arg
(
ap
,
int
);
if
(
tmpi
<
0
)
{
...
...
@@ -252,6 +264,8 @@ lwres__print_vsnprintf(char *str, size_t size, const char *format, va_list ap) {
unsigned
long
long
int
);
else
if
(
l
)
tmpui
=
va_arg
(
ap
,
long
int
);
else
if
(
z
)
tmpui
=
va_arg
(
ap
,
size_t
);
else
tmpui
=
va_arg
(
ap
,
int
);
sprintf
(
buf
,
...
...
@@ -265,6 +279,8 @@ lwres__print_vsnprintf(char *str, size_t size, const char *format, va_list ap) {
unsigned
long
long
int
);
else
if
(
l
)
tmpui
=
va_arg
(
ap
,
unsigned
long
int
);
else
if
(
z
)
tmpui
=
va_arg
(
ap
,
size_t
);
else
tmpui
=
va_arg
(
ap
,
unsigned
int
);
sprintf
(
buf
,
"%"
LWRES_PRINT_QUADFORMAT
"u"
,
...
...
@@ -276,6 +292,8 @@ lwres__print_vsnprintf(char *str, size_t size, const char *format, va_list ap) {
unsigned
long
long
int
);
else
if
(
l
)
tmpui
=
va_arg
(
ap
,
unsigned
long
int
);
else
if
(
z
)
tmpui
=
va_arg
(
ap
,
size_t
);
else
tmpui
=
va_arg
(
ap
,
unsigned
int
);
if
(
alt
)
{
...
...
@@ -292,6 +310,8 @@ lwres__print_vsnprintf(char *str, size_t size, const char *format, va_list ap) {
unsigned
long
long
int
);
else
if
(
l
)
tmpui
=
va_arg
(
ap
,
unsigned
long
int
);
else
if
(
z
)
tmpui
=
va_arg
(
ap
,
size_t
);
else
tmpui
=
va_arg
(
ap
,
unsigned
int
);
if
(
alt
)
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment