diff options
author | Cy Schubert <cy@FreeBSD.org> | 2015-07-05 15:42:16 +0000 |
---|---|---|
committer | Cy Schubert <cy@FreeBSD.org> | 2015-07-05 15:42:16 +0000 |
commit | 276da39af92f48350aa01091a2b8b3e735217eea (patch) | |
tree | fb96356e3ef85aaa8d1f5939a9decd315a7ca596 /contrib/ntp/ntpd/rc_cmdlength.c | |
parent | 31c98473c1337a238b00342edd7ef85dfb378e24 (diff) | |
parent | 873997f35a991eee09ed91148a0cf332360380da (diff) |
Notes
Diffstat (limited to 'contrib/ntp/ntpd/rc_cmdlength.c')
-rw-r--r-- | contrib/ntp/ntpd/rc_cmdlength.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/contrib/ntp/ntpd/rc_cmdlength.c b/contrib/ntp/ntpd/rc_cmdlength.c new file mode 100644 index 0000000000000..2807d2acd73e7 --- /dev/null +++ b/contrib/ntp/ntpd/rc_cmdlength.c @@ -0,0 +1,35 @@ +#include <config.h> + +#if HAVE_UNISTD_H +# include <unistd.h> +#endif + + +/* Bug 2853 */ +/* evaluate the length of the command sequence. This breaks at the first + * char that is not >= SPACE and <= 127 after trimming from the right. + */ +size_t +remoteconfig_cmdlength( + const char *src_buf, + const char *src_end + ) +{ + const char *scan; + unsigned char ch; + + /* trim whitespace & garbage from the right */ + while (src_end != src_buf) { + ch = src_end[-1]; + if (ch > ' ' && ch < 128) + break; + --src_end; + } + /* now do a forward scan */ + for (scan = src_buf; scan != src_end; ++scan) { + ch = scan[0]; + if ((ch < ' ' || ch >= 128) && ch != '\t') + break; + } + return (size_t)(scan - src_buf); +} |