summaryrefslogtreecommitdiffstats
path: root/contrib/libxo
diff options
context:
space:
mode:
authormarcel <marcel@FreeBSD.org>2014-11-18 18:03:40 +0000
committermarcel <marcel@FreeBSD.org>2014-11-18 18:03:40 +0000
commit529a1bcd76a13b638d96ee42dfae18aed336c67f (patch)
tree890e58d69193cd818d17ec5c1e3aed170d0d975f /contrib/libxo
parent76ed0e540b3cf5895a201aff9b674c4a99e8ecaa (diff)
downloadFreeBSD-src-529a1bcd76a13b638d96ee42dfae18aed336c67f.zip
FreeBSD-src-529a1bcd76a13b638d96ee42dfae18aed336c67f.tar.gz
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
Diffstat (limited to 'contrib/libxo')
-rw-r--r--contrib/libxo/configure.ac2
-rw-r--r--contrib/libxo/libxo/libxo.c31
-rw-r--r--contrib/libxo/libxo/xoconfig.h6
-rw-r--r--contrib/libxo/libxo/xoversion.h6
-rwxr-xr-xcontrib/libxo/xolint/xolint.pl44
5 files changed, 57 insertions, 32 deletions
diff --git a/contrib/libxo/configure.ac b/contrib/libxo/configure.ac
index 958b21c..904af12 100644
--- a/contrib/libxo/configure.ac
+++ b/contrib/libxo/configure.ac
@@ -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.
diff --git a/contrib/libxo/libxo/libxo.c b/contrib/libxo/libxo/libxo.c
index 77c6a3e..89adc03 100644
--- a/contrib/libxo/libxo/libxo.c
+++ b/contrib/libxo/libxo/libxo.c
@@ -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;
diff --git a/contrib/libxo/libxo/xoconfig.h b/contrib/libxo/libxo/xoconfig.h
index e42bde2..0870e35 100644
--- a/contrib/libxo/libxo/xoconfig.h
+++ b/contrib/libxo/libxo/xoconfig.h
@@ -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. */
diff --git a/contrib/libxo/libxo/xoversion.h b/contrib/libxo/libxo/xoversion.h
index 2d639b6..60c6118b 100644
--- a/contrib/libxo/libxo/xoversion.h
+++ b/contrib/libxo/libxo/xoversion.h
@@ -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
diff --git a/contrib/libxo/xolint/xolint.pl b/contrib/libxo/xolint/xolint.pl
index 8693e62..427edf7 100755
--- a/contrib/libxo/xolint/xolint.pl
+++ b/contrib/libxo/xolint/xolint.pl
@@ -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 {
OpenPOWER on IntegriCloud