diff options
author | David Timber <mieabby@gmail.com> | 2020-09-24 14:07:10 +0930 |
---|---|---|
committer | David Timber <mieabby@gmail.com> | 2020-09-24 14:07:10 +0930 |
commit | 5529cb366b7e7e6bb2dedefa1d6495bdb4d0352f (patch) | |
tree | dcbff94e6d46668ccc77363b40e0f13e5e0e8237 /src/util_rt.c | |
parent | c1ae3eef633237525443d48622bb6f633392d2f6 (diff) |
* Impl bne
* Reduce timeout values
* Impl telnet vector
* Separate stx_str/stx_out and eot_str/eot_out to skip echo
* Bugfix: wrong BNE_CONN_OP_TIMEOUT timer reset
* vssh: skip account if password auth is not available
* bne_vssh_write_f(): propagate write() EOF
* No EINTR handling
* lssh2_handle()
* prne_mbedtls_pth_handle()
* resolv_ensure_act_dns_fd()
* Add util funcs for telnet login prompt parsing
* prne_transmem()
* prne_memrmem()
* prne_memmem()
Diffstat (limited to 'src/util_rt.c')
-rw-r--r-- | src/util_rt.c | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/util_rt.c b/src/util_rt.c index a3829b2..549ac4f 100644 --- a/src/util_rt.c +++ b/src/util_rt.c @@ -221,6 +221,49 @@ void prne_transstr (char *str, int(*trans_f)(int)) { } } +void prne_transmem (void *m, size_t len, int(*trans_f)(int)) { + for (size_t i = 0; i < len; i += 1) { + ((uint8_t*)m)[i] = (uint8_t)trans_f(((uint8_t*)m)[i]); + } +} + +void *prne_memrchr ( + const void *haystack, + const int c, + const size_t hs_len) +{ + for (size_t i = 0, idx = hs_len - 1; i < hs_len; i += 1, idx -= 1) { + if (((const uint8_t*)haystack)[idx] == (uint8_t)c) { + return (uint8_t*)haystack + idx; + } + } + return NULL; +} + +void *prne_memrmem ( + const void *in_haystack, + const size_t in_hs_len, + const void *const needle, + const size_t n_len) +{ + const uint8_t *haystack = (const uint8_t *)in_haystack - n_len + in_hs_len; + size_t hs_len = in_hs_len; + + if (n_len == 0) { + return NULL; + } + + while (hs_len >= n_len) { + if (memcmp(haystack, needle, n_len) == 0) { + return (void*)haystack; + } + haystack -= 1; + hs_len -= 1; + } + + return NULL; +} + void *prne_memmem ( const void *in_haystack, const size_t in_hs_len, |