Upgrade libxo to 0.1.6.
Summary of changes: 1. Coverity defect fixes Obtained from: https://github.com/Juniper/libxo/releases/tag/0.1.6
This commit is contained in:
parent
edd14576c4
commit
c600d3070d
@ -12,7 +12,7 @@
|
||||
#
|
||||
|
||||
AC_PREREQ(2.2)
|
||||
AC_INIT([libxo], [0.1.5], [phil@juniper.net])
|
||||
AC_INIT([libxo], [0.1.6], [phil@juniper.net])
|
||||
AM_INIT_AUTOMAKE([-Wall -Werror foreign -Wno-portability])
|
||||
|
||||
# Support silent build rules. Requires at least automake-1.11.
|
||||
|
@ -317,7 +317,7 @@ xo_init_handle (xo_handle_t *xop)
|
||||
cp = getenv("LC_ALL");
|
||||
if (cp == NULL)
|
||||
cp = "UTF-8"; /* Optimistic? */
|
||||
cp = setlocale(LC_CTYPE, cp);
|
||||
(void) setlocale(LC_CTYPE, cp);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -607,8 +607,10 @@ xo_vsnprintf (xo_handle_t *xop, xo_buffer_t *xbp, const char *fmt, va_list vap)
|
||||
rc = vsnprintf(xbp->xb_curp, left, fmt, va_local);
|
||||
|
||||
if (rc > xbp->xb_size) {
|
||||
if (!xo_buf_has_room(xbp, rc))
|
||||
if (!xo_buf_has_room(xbp, rc)) {
|
||||
va_end(va_local);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/*
|
||||
* After we call vsnprintf(), the stage of vap is not defined.
|
||||
@ -648,8 +650,10 @@ xo_printf_v (xo_handle_t *xop, const char *fmt, va_list vap)
|
||||
rc = vsnprintf(xbp->xb_curp, left, fmt, va_local);
|
||||
|
||||
if (rc > xbp->xb_size) {
|
||||
if (!xo_buf_has_room(xbp, rc))
|
||||
if (!xo_buf_has_room(xbp, rc)) {
|
||||
va_end(va_local);
|
||||
return -1;
|
||||
}
|
||||
|
||||
va_end(va_local); /* Reset vap to the start */
|
||||
va_copy(va_local, vap);
|
||||
@ -974,8 +978,10 @@ xo_warn_hcv (xo_handle_t *xop, int code, int check_warn,
|
||||
int left = xbp->xb_size - (xbp->xb_curp - xbp->xb_bufp);
|
||||
int rc = vsnprintf(xbp->xb_curp, left, newfmt, vap);
|
||||
if (rc > xbp->xb_size) {
|
||||
if (!xo_buf_has_room(xbp, rc))
|
||||
if (!xo_buf_has_room(xbp, rc)) {
|
||||
va_end(va_local);
|
||||
return;
|
||||
}
|
||||
|
||||
va_end(vap); /* Reset vap to the start */
|
||||
va_copy(vap, va_local);
|
||||
@ -1118,8 +1124,10 @@ xo_message_hcv (xo_handle_t *xop, int code, const char *fmt, va_list vap)
|
||||
int left = xbp->xb_size - (xbp->xb_curp - xbp->xb_bufp);
|
||||
rc = vsnprintf(xbp->xb_curp, left, fmt, vap);
|
||||
if (rc > xbp->xb_size) {
|
||||
if (!xo_buf_has_room(xbp, rc))
|
||||
if (!xo_buf_has_room(xbp, rc)) {
|
||||
va_end(va_local);
|
||||
return;
|
||||
}
|
||||
|
||||
va_end(vap); /* Reset vap to the start */
|
||||
va_copy(vap, va_local);
|
||||
@ -1154,14 +1162,15 @@ xo_message_hcv (xo_handle_t *xop, int code, const char *fmt, va_list vap)
|
||||
|
||||
va_copy(va_local, vap);
|
||||
|
||||
rc = vsnprintf(buf, bufsiz, fmt, va_local);
|
||||
rc = vsnprintf(bp, bufsiz, fmt, va_local);
|
||||
if (rc > bufsiz) {
|
||||
bufsiz = rc + BUFSIZ;
|
||||
bp = alloca(bufsiz);
|
||||
va_end(va_local);
|
||||
va_copy(va_local, vap);
|
||||
rc = vsnprintf(buf, bufsiz, fmt, va_local);
|
||||
rc = vsnprintf(bp, bufsiz, fmt, va_local);
|
||||
}
|
||||
va_end(va_local);
|
||||
cp = bp + rc;
|
||||
|
||||
if (need_nl) {
|
||||
@ -1302,9 +1311,9 @@ xo_create_to_file (FILE *fp, xo_style_t style, xo_xof_flags_t flags)
|
||||
* @xop XO handle to alter (or NULL for default handle)
|
||||
*/
|
||||
void
|
||||
xo_destroy (xo_handle_t *xop)
|
||||
xo_destroy (xo_handle_t *xop_arg)
|
||||
{
|
||||
xop = xo_default(xop);
|
||||
xo_handle_t *xop = xo_default(xop_arg);
|
||||
|
||||
if (xop->xo_close && (xop->xo_flags & XOF_CLOSE_FP))
|
||||
xop->xo_close(xop->xo_opaque);
|
||||
@ -1315,7 +1324,7 @@ xo_destroy (xo_handle_t *xop)
|
||||
xo_buf_cleanup(&xop->xo_predicate);
|
||||
xo_buf_cleanup(&xop->xo_attrs);
|
||||
|
||||
if (xop == &xo_default_handle) {
|
||||
if (xop_arg == NULL) {
|
||||
bzero(&xo_default_handle, sizeof(&xo_default_handle));
|
||||
xo_default_inited = 0;
|
||||
} else
|
||||
@ -1743,7 +1752,7 @@ xo_format_string_direct (xo_handle_t *xop, xo_buffer_t *xbp,
|
||||
int need_enc, int have_enc)
|
||||
{
|
||||
int cols = 0;
|
||||
wchar_t wc;
|
||||
wchar_t wc = 0;
|
||||
int ilen, olen, width;
|
||||
int attr = (flags & XFF_ATTR);
|
||||
const char *sp;
|
||||
|
@ -158,7 +158,7 @@
|
||||
#define PACKAGE_NAME "libxo"
|
||||
|
||||
/* Define to the full name and version of this package. */
|
||||
#define PACKAGE_STRING "libxo 0.1.5"
|
||||
#define PACKAGE_STRING "libxo 0.1.6"
|
||||
|
||||
/* Define to the one symbol short name of this package. */
|
||||
#define PACKAGE_TARNAME "libxo"
|
||||
@ -167,7 +167,7 @@
|
||||
#define PACKAGE_URL ""
|
||||
|
||||
/* Define to the version of this package. */
|
||||
#define PACKAGE_VERSION "0.1.5"
|
||||
#define PACKAGE_VERSION "0.1.6"
|
||||
|
||||
/* If using the C implementation of alloca, define if you know the
|
||||
direction of stack growth for your system; otherwise it will be
|
||||
@ -181,7 +181,7 @@
|
||||
#define STDC_HEADERS 1
|
||||
|
||||
/* Version number of package */
|
||||
#define VERSION "0.1.5"
|
||||
#define VERSION "0.1.6"
|
||||
|
||||
/* Define to `__inline__' or `__inline' if that's what the C compiler
|
||||
calls it, or to nothing if 'inline' is not supported under any name. */
|
||||
|
@ -18,17 +18,17 @@
|
||||
/**
|
||||
* The version string
|
||||
*/
|
||||
#define LIBXO_VERSION "0.1.5"
|
||||
#define LIBXO_VERSION "0.1.6"
|
||||
|
||||
/**
|
||||
* The version number
|
||||
*/
|
||||
#define LIBXO_VERSION_NUMBER 1004
|
||||
#define LIBXO_VERSION_NUMBER 1006
|
||||
|
||||
/**
|
||||
* The version number as a string
|
||||
*/
|
||||
#define LIBXO_VERSION_STRING "1004"
|
||||
#define LIBXO_VERSION_STRING "1006"
|
||||
|
||||
/**
|
||||
* The version number extra info as a string
|
||||
|
@ -28,6 +28,19 @@ sub main {
|
||||
extract_samples() if /^-X/;
|
||||
}
|
||||
|
||||
if ($#ARGV < 0) {
|
||||
print STDERR "xolint [options] files ...\n";
|
||||
print STDERR " -c invoke 'cpp' on input\n";
|
||||
print STDERR " -C flags Pass flags to cpp\n";
|
||||
print STDERR " -d Show debug output\n";
|
||||
print STDERR " -D Extract xolint documentation\n";
|
||||
print STDERR " -I Print xo_info_t data\n";
|
||||
print STDERR " -p Print input data on errors\n";
|
||||
print STDERR " -V Print vocabulary (list of tags)\n";
|
||||
print STDERR " -X Print examples of invalid use\n";
|
||||
exit(1);
|
||||
}
|
||||
|
||||
for $file (@ARGV) {
|
||||
parse_file($file);
|
||||
}
|
||||
@ -269,9 +282,9 @@ sub check_format {
|
||||
$last = $prev;
|
||||
next;
|
||||
}
|
||||
$prev = $ch;
|
||||
}
|
||||
|
||||
$prev = $ch;
|
||||
$build[$phase] .= $ch;
|
||||
}
|
||||
|
||||
@ -346,18 +359,6 @@ sub check_field {
|
||||
info("potential missing slash after N, L, or T with format")
|
||||
if $field[1] =~ /%/;
|
||||
|
||||
#@ Format cannot be given when content is present (roles: DNLT)
|
||||
#@ xo_emit("{T:Max/%6.6s}", "Max");
|
||||
#@ Fields with the D, N, L, or T roles can't have both
|
||||
#@ static literal content ("{T:Title}") and a
|
||||
#@ format ("{T:/%s}").
|
||||
#@ This error will also occur when the content has a backslash
|
||||
#@ in it, like "{N:Type of I/O}"; backslashes should be escaped,
|
||||
#@ like "{N:Type of I\\/O}". Note the double backslash, one for
|
||||
#@ handling 'C' strings, and one for libxo.
|
||||
error("format cannot be given when content is present")
|
||||
if $field[1] && $field[2];
|
||||
|
||||
#@ An encoding format cannot be given (roles: DNLT)
|
||||
#@ xo_emit("{T:Max//%s}", "Max");
|
||||
#@ Fields with the D, N, L, and T roles are not emitted in
|
||||
@ -367,6 +368,21 @@ sub check_field {
|
||||
if $field[3];
|
||||
}
|
||||
|
||||
# Field is a decoration, label, or title
|
||||
if ($field[0] =~ /DLN/) {
|
||||
#@ Format cannot be given when content is present (roles: DLN)
|
||||
#@ xo_emit("{N:Max/%6.6s}", "Max");
|
||||
#@ Fields with the D, L, or N roles can't have both
|
||||
#@ static literal content ("{L:Label}") and a
|
||||
#@ format ("{L:/%s}").
|
||||
#@ This error will also occur when the content has a backslash
|
||||
#@ in it, like "{N:Type of I/O}"; backslashes should be escaped,
|
||||
#@ like "{N:Type of I\\/O}". Note the double backslash, one for
|
||||
#@ handling 'C' strings, and one for libxo.
|
||||
error("format cannot be given when content is present")
|
||||
if $field[1] && $field[2];
|
||||
}
|
||||
|
||||
# A value field
|
||||
if (length($field[0]) == 0 || $field[0] =~ /V/) {
|
||||
|
||||
@ -527,7 +543,7 @@ sub check_field_format {
|
||||
#@ for non-strings. This error may occur from a typo,
|
||||
#@ like "{:tag/%6..6d}" where only one period should be used.
|
||||
error("max width only valid for strings")
|
||||
if $#chunks >= 2 && $fc =~ /[sS]/;
|
||||
if $#chunks >= 2 && $fc !~ /[sS]/;
|
||||
}
|
||||
|
||||
sub error {
|
||||
|
Loading…
Reference in New Issue
Block a user