if (fstat (fd, &statb) < 0)
{
vlib_cli_output (vm, "Couldn't stat %s\n", filename);
+ close (fd);
return;
}
if (connect (sockfd, (const void *) &serv_addr, sizeof (serv_addr)) < 0)
{
clib_unix_warning ("Connect failure to (%s, %d)", hostname, port);
+ close(sockfd);
return ~0;
}
if (bind (sockfd, (struct sockaddr *) &serv_addr, sizeof (serv_addr)) < 0)
{
+ close (sockfd);
return clib_error_return_unix (0, "bind");
}
sib = vlib_get_node_by_name (vm, (u8 *) n->sibling_of);
if (!sib)
- clib_error ("sibling `%s' not found for node `%v'", n->sibling_of,
- n->name);
+ {
+ error = clib_error_create ("sibling `%s' not found for node `%v'",
+ n->sibling_of, n->name);
+ goto done;
+ }
/* *INDENT-OFF* */
clib_bitmap_foreach (si, sib->sibling_bitmap, ({
vlib_set_thread_name (char *name)
{
int pthread_setname_np (pthread_t __target_thread, const char *__name);
+ int rv;
pthread_t thread = pthread_self ();
if (thread)
- pthread_setname_np (thread, name);
+ {
+ rv = pthread_setname_np (thread, name);
+ if (rv)
+ clib_warning ("pthread_setname_np returned %d", rv);
+ }
}
static int
unformat_input_t in;
unformat_init_string (&in, (char *) buffer,
strlen ((char *) buffer));
- unformat (&in, "%U", unformat_bitmap_list, &r);
+ if (unformat (&in, "%U", unformat_bitmap_list, &r) != 1)
+ clib_warning ("unformat_bitmap_list failed");
unformat_free (&in);
}
vec_free (buffer);
u32 fqix;
u32 nelts = 0;
- unformat (input, "%d", &nelts);
- if ((nelts != 4) && (nelts != 8) && (nelts != 16) && (nelts != 32))
+ if ((unformat (input, "%d", &nelts) != 1) ||
+ ((nelts != 4) && (nelts != 8) && (nelts != 16) && (nelts != 32)))
{
return clib_error_return (0, "expecting 4,8,16,32");
}
(void) signum;
/* Terminal resized, fetch the new size */
- ioctl (UNIX_CLI_STDIN_FD, TIOCGWINSZ, &ws);
+ if (ioctl (UNIX_CLI_STDIN_FD, TIOCGWINSZ, &ws) < 0)
+ {
+ /* "Should never happen..." */
+ clib_unix_warning ("TIOCGWINSZ");
+ /* We can't trust ws.XXX... */
+ return;
+ }
cf->width = ws.ws_col;
cf->height = ws.ws_row;
/* Set stdin to be non-blocking. */
if ((flags = fcntl (UNIX_CLI_STDIN_FD, F_GETFL, 0)) < 0)
flags = 0;
- fcntl (UNIX_CLI_STDIN_FD, F_SETFL, flags | O_NONBLOCK);
+ (void) fcntl (UNIX_CLI_STDIN_FD, F_SETFL, flags | O_NONBLOCK);
cf_index = unix_cli_file_add (cm, "stdin", UNIX_CLI_STDIN_FD);
cf = pool_elt_at_index (cm->cli_file_pool, cf_index);
clib_longjmp (&unix_main.vlib_main->main_loop_exit,
VLIB_MAIN_LOOP_EXIT_CLI);
}
+ /* fall through */
case SIGQUIT:
case SIGINT:
case SIGILL:
int fd;
fd = open ("/proc/self/coredump_filter", O_WRONLY);
- if (fd > 0)
+ if (fd >= 0)
{
if (write (fd, "0x6f\n", 5) != 5)
clib_unix_warning ("coredump filter write failed!");
/* allocate N x 1mb stacks, aligned e.g. to a 16mb boundary */
thread_stacks = clib_mem_alloc_aligned
- (tm->n_thread_stacks * VLIB_THREAD_STACK_SIZE,
+ ((uword) tm->n_thread_stacks * VLIB_THREAD_STACK_SIZE,
(VLIB_MAX_CPUS << VLIB_LOG2_THREAD_STACK_SIZE));
sm->vm_base = thread_stacks;
clib_memcpy (ip4_address, &sa->sin_addr.s_addr, sizeof (ip4_address[0]));
if (ioctl (fd, SIOCGIFMTU, &ifr) < 0)
- return -1;
+ {
+ close (fd);
+ return -1;
+ }
if (mtu)
*mtu = ifr.ifr_mtu - ( /* IP4 header */ 20 + /* UDP header */ 8);
{
u8 *s;
int fd;
+ clib_error_t * error = 0;
fd = open (file_name, O_WRONLY);
if (fd < 0)
va_end (va);
if (write (fd, s, vec_len (s)) < 0)
- return clib_error_return_unix (0, "write `%s'", file_name);
+ error = clib_error_return_unix (0, "write `%s'", file_name);
vec_free (s);
close (fd);
- return 0;
+ return error;
}
clib_error_t *
return 0;
unformat_init_string (&in, p + 1, strlen (p + 1));
- unformat (&in, "%s", &s);
+ if (unformat (&in, "%s", &s) != 1)
+ clib_unix_warning ("no string?");
unformat_free (&in);
return s;
tlv = (cdp_tlv_t *)cur;
tlv->t = ntohs(tlv->t);
tlv->l = ntohs(tlv->l);
- if (tlv->t > ARRAY_LEN(tlv_handlers)) {
+ if (tlv->t >= ARRAY_LEN(tlv_handlers)) {
s = format (s, "BAD_TLV\n");
break;
}