aboutsummaryrefslogtreecommitdiff
path: root/src/util_rt.c
diff options
context:
space:
mode:
authorDavid Timber <mieabby@gmail.com>2020-09-24 14:07:10 +0930
committerDavid Timber <mieabby@gmail.com>2020-09-24 14:07:10 +0930
commit5529cb366b7e7e6bb2dedefa1d6495bdb4d0352f (patch)
treedcbff94e6d46668ccc77363b40e0f13e5e0e8237 /src/util_rt.c
parentc1ae3eef633237525443d48622bb6f633392d2f6 (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.c43
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,