krb5 commit: Use k5-buf.h integer helpers where appropriate

Greg Hudson <[email protected]>
Newsgroups gmane.comp.encryption.kerberos.cvs
Message-ID <[email protected]>
https://github.com/krb5/krb5/commit/4d106256cc5c4765be0d1d844af0b18cdcf1404c
commit 4d106256cc5c4765be0d1d844af0b18cdcf1404c
Author: Greg Hudson <[email protected]>
Date:   Wed Nov 13 00:53:56 2019 -0500

    Use k5-buf.h integer helpers where appropriate

 src/lib/gssapi/mechglue/g_export_cred.c |    7 +--
 src/lib/krb5/ccache/cc_file.c           |   19 +++------
 src/lib/krb5/ccache/cc_kcm.c            |   14 +-----
 src/plugins/kdb/lmdb/marshal.c          |   72 +++++++++++-------------------
 src/plugins/preauth/spake/spake_kdc.c   |   15 ++-----
 src/util/support/utf8_conv.c            |   10 +---
 6 files changed, 44 insertions(+), 93 deletions(-)

diff --git a/src/lib/gssapi/mechglue/g_export_cred.c b/src/lib/gssapi/mechglue/g_export_cred.c
index 0c273bf..9678c6d 100644
--- a/src/lib/gssapi/mechglue/g_export_cred.c
+++ b/src/lib/gssapi/mechglue/g_export_cred.c
@@ -66,7 +66,6 @@ gss_export_cred(OM_uint32 * minor_status, gss_cred_id_t cred_handle,
     gss_mechanism mech;
     gss_buffer_desc mech_token;
     struct k5buf buf;
-    char lenbuf[4];
     int i;
 
     status = val_exp_cred_args(minor_status, cred_handle, token);
@@ -97,11 +96,9 @@ gss_export_cred(OM_uint32 * minor_status, gss_cred_id_t cred_handle,
         }
 
         /* Append the mech OID and token to buf. */
-        store_32_be(public_oid->length, lenbuf);
-        k5_buf_add_len(&buf, lenbuf, 4);
+        k5_buf_add_uint32_be(&buf, public_oid->length);
         k5_buf_add_len(&buf, public_oid->elements, public_oid->length);
-        store_32_be(mech_token.length, lenbuf);
-        k5_buf_add_len(&buf, lenbuf, 4);
+        k5_buf_add_uint32_be(&buf, mech_token.length);
         k5_buf_add_len(&buf, mech_token.value, mech_token.length);
         gss_release_buffer(&tmpmin, &mech_token);
     }
diff --git a/src/lib/krb5/ccache/cc_file.c b/src/lib/krb5/ccache/cc_file.c
index e78ac3a..9a9b45a 100644
--- a/src/lib/krb5/ccache/cc_file.c
+++ b/src/lib/krb5/ccache/cc_file.c
@@ -446,7 +446,6 @@ fcc_initialize(krb5_context context, krb5_ccache id, krb5_principal princ)
     krb5_error_code ret;
     krb5_os_context os_ctx = &context->os_context;
     fcc_data *data = id->data;
-    char i16buf[2], i32buf[4];
     uint16_t fields_len;
     ssize_t nwritten;
     int st, flags, version, fd = -1;
@@ -484,25 +483,19 @@ fcc_initialize(krb5_context context, krb5_ccache id, krb5_principal princ)
     /* Prepare the header and principal in buf. */
     k5_buf_init_dynamic(&buf);
     version = context->fcc_default_format - FVNO_BASE;
-    store_16_be(FVNO_BASE + version, i16buf);
-    k5_buf_add_len(&buf, i16buf, 2);
+    k5_buf_add_uint16_be(&buf, FVNO_BASE + version);
     if (version >= 4) {
         /* Add tagged header fields. */
         fields_len = 0;
         if (os_ctx->os_flags & KRB5_OS_TOFFSET_VALID)
             fields_len += 12;
-        store_16_be(fields_len, i16buf);
-        k5_buf_add_len(&buf, i16buf, 2);
+        k5_buf_add_uint16_be(&buf, fields_len);
         if (os_ctx->os_flags & KRB5_OS_TOFFSET_VALID) {
             /* Add time offset tag. */
-            store_16_be(FCC_TAG_DELTATIME, i16buf);
-            k5_buf_add_len(&buf, i16buf, 2);
-            store_16_be(8, i16buf);
-            k5_buf_add_len(&buf, i16buf, 2);
-            store_32_be(os_ctx->time_offset, i32buf);
-            k5_buf_add_len(&buf, i32buf, 4);
-            store_32_be(os_ctx->usec_offset, i32buf);
-            k5_buf_add_len(&buf, i32buf, 4);
+            k5_buf_add_uint16_be(&buf, FCC_TAG_DELTATIME);
+            k5_buf_add_uint16_be(&buf, 8);
+            k5_buf_add_uint32_be(&buf, os_ctx->time_offset);
+            k5_buf_add_uint32_be(&buf, os_ctx->usec_offset);
         }
     }
     k5_marshal_princ(&buf, version, princ);
diff --git a/src/lib/krb5/ccache/cc_kcm.c b/src/lib/krb5/ccache/cc_kcm.c
index 1f5d6c8..a76a285 100644
--- a/src/lib/krb5/ccache/cc_kcm.c
+++ b/src/lib/krb5/ccache/cc_kcm.c
@@ -121,16 +121,6 @@ kcmreq_init(struct kcmreq *req, kcm_opcode opcode, krb5_ccache cache)
     }
 }
 
-/* Add a 32-bit value to the request in big-endian byte order. */
-static void
-kcmreq_put32(struct kcmreq *req, uint32_t val)
-{
-    unsigned char bytes[4];
-
-    store_32_be(val, bytes);
-    k5_buf_add_len(&req->reqbuf, bytes, 4);
-}
-
 #ifdef __APPLE__
 
 /* The maximum length of an in-band request or reply as defined by the RPC
@@ -596,7 +586,7 @@ set_kdc_offset(krb5_context context, krb5_ccache cache)
 
     if (context->os_context.os_flags & KRB5_OS_TOFFSET_VALID) {
         kcmreq_init(&req, KCM_OP_SET_KDC_OFFSET, cache);
-        kcmreq_put32(&req, context->os_context.time_offset);
+        k5_buf_add_uint32_be(&req.reqbuf, context->os_context.time_offset);
         (void)cache_call(context, cache, &req);
         kcmreq_free(&req);
     }
@@ -824,7 +814,7 @@ kcm_remove_cred(krb5_context context, krb5_ccache cache, krb5_flags flags,
     struct kcmreq req;
 
     kcmreq_init(&req, KCM_OP_REMOVE_CRED, cache);
-    kcmreq_put32(&req, flags);
+    k5_buf_add_uint32_be(&req.reqbuf, flags);
     k5_marshal_mcred(&req.reqbuf, mcred);
     ret = cache_call(context, cache, &req);
     kcmreq_free(&req);
diff --git a/src/plugins/kdb/lmdb/marshal.c b/src/plugins/kdb/lmdb/marshal.c
index f49a2cb..433bb81 100644
--- a/src/plugins/kdb/lmdb/marshal.c
+++ b/src/plugins/kdb/lmdb/marshal.c
@@ -36,29 +36,11 @@
 #include "klmdb-int.h"
 
 static void
-put16(struct k5buf *buf, uint16_t num)
-{
-    uint8_t n[2];
-
-    store_16_le(num, n);
-    k5_buf_add_len(buf, n, 2);
-}
-
-static void
-put32(struct k5buf *buf, uint32_t num)
-{
-    uint8_t n[4];
-
-    store_32_le(num, n);
-    k5_buf_add_len(buf, n, 4);
-}
-
-static void
 put_tl_data(struct k5buf *buf, const krb5_tl_data *tl)
 {
     for (; tl != NULL; tl = tl->tl_data_next) {
-        put16(buf, tl->tl_data_type);
-        put16(buf, tl->tl_data_length);
+        k5_buf_add_uint16_le(buf, tl->tl_data_type);
+        k5_buf_add_uint16_le(buf, tl->tl_data_length);
         k5_buf_add_len(buf, tl->tl_data_contents, tl->tl_data_length);
     }
 }
@@ -76,21 +58,21 @@ klmdb_encode_princ(krb5_context context, const krb5_db_entry *entry,
 
     k5_buf_init_dynamic(&buf);
 
-    put32(&buf, entry->attributes);
-    put32(&buf, entry->max_life);
-    put32(&buf, entry->max_renewable_life);
-    put32(&buf, entry->expiration);
-    put32(&buf, entry->pw_expiration);
-    put16(&buf, entry->n_tl_data);
-    put16(&buf, entry->n_key_data);
+    k5_buf_add_uint32_le(&buf, entry->attributes);
+    k5_buf_add_uint32_le(&buf, entry->max_life);
+    k5_buf_add_uint32_le(&buf, entry->max_renewable_life);
+    k5_buf_add_uint32_le(&buf, entry->expiration);
+    k5_buf_add_uint32_le(&buf, entry->pw_expiration);
+    k5_buf_add_uint16_le(&buf, entry->n_tl_data);
+    k5_buf_add_uint16_le(&buf, entry->n_key_data);
     put_tl_data(&buf, entry->tl_data);
     for (i = 0; i < entry->n_key_data; i++) {
         kd = &entry->key_data[i];
-        put16(&buf, kd->key_data_ver);
-        put16(&buf, kd->key_data_kvno);
+        k5_buf_add_uint16_le(&buf, kd->key_data_ver);
+        k5_buf_add_uint16_le(&buf, kd->key_data_kvno);
         for (j = 0; j < kd->key_data_ver; j++) {
-            put16(&buf, kd->key_data_type[j]);
-            put16(&buf, kd->key_data_length[j]);
+            k5_buf_add_uint16_le(&buf, kd->key_data_type[j]);
+            k5_buf_add_uint16_le(&buf, kd->key_data_length[j]);
             if (kd->key_data_length[j] > 0) {
                 k5_buf_add_len(&buf, kd->key_data_contents[j],
                                kd->key_data_length[j]);
@@ -125,26 +107,26 @@ klmdb_encode_policy(krb5_context context, const osa_policy_ent_rec *pol,
     *len_out = 0;
 
     k5_buf_init_dynamic(&buf);
-    put32(&buf, pol->pw_min_life);
-    put32(&buf, pol->pw_max_life);
-    put32(&buf, pol->pw_min_length);
-    put32(&buf, pol->pw_min_classes);
-    put32(&buf, pol->pw_history_num);
-    put32(&buf, pol->pw_max_fail);
-    put32(&buf, pol->pw_failcnt_interval);
-    put32(&buf, pol->pw_lockout_duration);
-    put32(&buf, pol->attributes);
-    put32(&buf, pol->max_life);
-    put32(&buf, pol->max_renewable_life);
+    k5_buf_add_uint32_le(&buf, pol->pw_min_life);
+    k5_buf_add_uint32_le(&buf, pol->pw_max_life);
+    k5_buf_add_uint32_le(&buf, pol->pw_min_length);
+    k5_buf_add_uint32_le(&buf, pol->pw_min_classes);
+    k5_buf_add_uint32_le(&buf, pol->pw_history_num);
+    k5_buf_add_uint32_le(&buf, pol->pw_max_fail);
+    k5_buf_add_uint32_le(&buf, pol->pw_failcnt_interval);
+    k5_buf_add_uint32_le(&buf, pol->pw_lockout_duration);
+    k5_buf_add_uint32_le(&buf, pol->attributes);
+    k5_buf_add_uint32_le(&buf, pol->max_life);
+    k5_buf_add_uint32_le(&buf, pol->max_renewable_life);
 
     if (pol->allowed_keysalts == NULL) {
-        put32(&buf, 0);
+        k5_buf_add_uint32_le(&buf, 0);
     } else {
-        put32(&buf, strlen(pol->allowed_keysalts));
+        k5_buf_add_uint32_le(&buf, strlen(pol->allowed_keysalts));
         k5_buf_add(&buf, pol->allowed_keysalts);
     }
 
-    put16(&buf, pol->n_tl_data);
+    k5_buf_add_uint16_le(&buf, pol->n_tl_data);
     put_tl_data(&buf, pol->tl_data);
 
     if (k5_buf_status(&buf) != 0)
diff --git a/src/plugins/preauth/spake/spake_kdc.c b/src/plugins/preauth/spake/spake_kdc.c
index 59e8840..88c964c 100644
--- a/src/plugins/preauth/spake/spake_kdc.c
+++ b/src/plugins/preauth/spake/spake_kdc.c
@@ -120,10 +120,7 @@ parse_cookie(const krb5_data *cookie, int *stage_out, int32_t *group_out,
 static void
 marshal_data(struct k5buf *buf, const krb5_data *data)
 {
-    uint8_t lenbuf[4];
-
-    store_32_be(data->length, lenbuf);
-    k5_buf_add_len(buf, lenbuf, 4);
+    k5_buf_add_uint32_be(buf, data->length);
     k5_buf_add_len(buf, data->data, data->length);
 }
 
@@ -133,18 +130,14 @@ make_cookie(int stage, int32_t group, const krb5_data *spake,
             const krb5_data *thash, krb5_data *cookie_out)
 {
     struct k5buf buf;
-    uint8_t intbuf[4];
 
     *cookie_out = empty_data();
     k5_buf_init_dynamic_zap(&buf);
 
     /* Marshal the version, stage, and group. */
-    store_16_be(1, intbuf);
-    k5_buf_add_len(&buf, intbuf, 2);
-    store_16_be(stage, intbuf);
-    k5_buf_add_len(&buf, intbuf, 2);
-    store_32_be(group, intbuf);
-    k5_buf_add_len(&buf, intbuf, 4);
+    k5_buf_add_uint16_be(&buf, 1);
+    k5_buf_add_uint16_be(&buf, stage);
+    k5_buf_add_uint32_be(&buf, group);
 
     /* Marshal the data fields. */
     marshal_data(&buf, spake);
diff --git a/src/util/support/utf8_conv.c b/src/util/support/utf8_conv.c
index 5bfb03a..5ddaa2d 100644
--- a/src/util/support/utf8_conv.c
+++ b/src/util/support/utf8_conv.c
@@ -94,7 +94,6 @@ k5_utf8_to_utf16le(const char *utf8, uint8_t **utf16_out, size_t *nbytes_out)
     struct k5buf buf;
     krb5_ucs4 ch;
     size_t chlen, i;
-    uint8_t *p;
 
     *utf16_out = NULL;
     *nbytes_out = 0;
@@ -127,16 +126,13 @@ k5_utf8_to_utf16le(const char *utf8, uint8_t **utf16_out, size_t *nbytes_out)
 
         /* Characters in the basic multilingual plane are encoded using two
          * bytes; other characters are encoded using four bytes. */
-        p = k5_buf_get_space(&buf, IS_BMP(ch) ? 2 : 4);
-        if (p == NULL)
-            return ENOMEM;
         if (IS_BMP(ch)) {
-            store_16_le(ch, p);
+            k5_buf_add_uint16_le(&buf, ch);
         } else {
             /* 0x10000 is subtracted from ch; then the high ten bits plus
              * 0xD800 and the low ten bits plus 0xDC00 are the surrogates. */
-            store_16_le(HIGH_SURROGATE(ch), p);
-            store_16_le(LOW_SURROGATE(ch), p + 2);
+            k5_buf_add_uint16_le(&buf, HIGH_SURROGATE(ch));
+            k5_buf_add_uint16_le(&buf, LOW_SURROGATE(ch));
         }
 
         /* Move to next UTF-8 character. */
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.