OpenCoverage

strlcat.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/openssh/src/openbsd-compat/strlcat.c
Source codeSwitch to Preprocessed file
LineSourceCount
1/* $OpenBSD: strlcat.c,v 1.13 2005/08/08 08:05:37 espie Exp $ */-
2-
3/*-
4 * Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com>-
5 *-
6 * Permission to use, copy, modify, and distribute this software for any-
7 * purpose with or without fee is hereby granted, provided that the above-
8 * copyright notice and this permission notice appear in all copies.-
9 *-
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES-
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF-
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR-
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES-
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN-
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF-
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.-
17 */-
18-
19/* OPENBSD ORIGINAL: lib/libc/string/strlcat.c */-
20-
21#include "includes.h"-
22#ifndef HAVE_STRLCAT-
23-
24#include <sys/types.h>-
25#include <string.h>-
26-
27/*-
28 * Appends src to string dst of size siz (unlike strncat, siz is the-
29 * full size of dst, not space left). At most siz-1 characters-
30 * will be copied. Always NUL terminates (unless siz <= strlen(dst)).-
31 * Returns strlen(src) + MIN(siz, strlen(initial dst)).-
32 * If retval >= siz, truncation occurred.-
33 */-
34size_t-
35strlcat(char *dst, const char *src, size_t siz)-
36{-
37 char *d = dst;-
38 const char *s = src;-
39 size_t n = siz;-
40 size_t dlen;-
41-
42 /* Find the end of dst and adjust bytes left but don't go past end */-
43 while (n-- != 0 && *d != '\0')
n-- != 0Description
TRUEevaluated 18793 times by 6 tests
Evaluated by:
  • ssh-keygen
  • sshd
  • test_kex
  • test_match
  • test_sshkey
  • test_utf8
FALSEnever evaluated
*d != '\0'Description
TRUEevaluated 18583 times by 5 tests
Evaluated by:
  • ssh-keygen
  • sshd
  • test_match
  • test_sshkey
  • test_utf8
FALSEevaluated 210 times by 6 tests
Evaluated by:
  • ssh-keygen
  • sshd
  • test_kex
  • test_match
  • test_sshkey
  • test_utf8
0-18793
44 d++;
executed 18583 times by 5 tests: d++;
Executed by:
  • ssh-keygen
  • sshd
  • test_match
  • test_sshkey
  • test_utf8
18583
45 dlen = d - dst;-
46 n = siz - dlen;-
47-
48 if (n == 0)
n == 0Description
TRUEnever evaluated
FALSEevaluated 210 times by 6 tests
Evaluated by:
  • ssh-keygen
  • sshd
  • test_kex
  • test_match
  • test_sshkey
  • test_utf8
0-210
49 return(dlen + strlen(s));
never executed: return(dlen + strlen(s));
0
50 while (*s != '\0') {
*s != '\0'Description
TRUEevaluated 4746 times by 6 tests
Evaluated by:
  • ssh-keygen
  • sshd
  • test_kex
  • test_match
  • test_sshkey
  • test_utf8
FALSEevaluated 210 times by 6 tests
Evaluated by:
  • ssh-keygen
  • sshd
  • test_kex
  • test_match
  • test_sshkey
  • test_utf8
210-4746
51 if (n != 1) {
n != 1Description
TRUEevaluated 4742 times by 6 tests
Evaluated by:
  • ssh-keygen
  • sshd
  • test_kex
  • test_match
  • test_sshkey
  • test_utf8
FALSEevaluated 4 times by 1 test
Evaluated by:
  • test_utf8
4-4742
52 *d++ = *s;-
53 n--;-
54 }
executed 4742 times by 6 tests: end of block
Executed by:
  • ssh-keygen
  • sshd
  • test_kex
  • test_match
  • test_sshkey
  • test_utf8
4742
55 s++;-
56 }
executed 4746 times by 6 tests: end of block
Executed by:
  • ssh-keygen
  • sshd
  • test_kex
  • test_match
  • test_sshkey
  • test_utf8
4746
57 *d = '\0';-
58-
59 return(dlen + (s - src)); /* count does not include NUL */
executed 210 times by 6 tests: return(dlen + (s - src));
Executed by:
  • ssh-keygen
  • sshd
  • test_kex
  • test_match
  • test_sshkey
  • test_utf8
210
60}-
61-
62#endif /* !HAVE_STRLCAT */-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.2.2