diff --git a/import.c b/import.c index e5893c0a..06e7a4ba 100644 --- a/import.c +++ b/import.c @@ -905,7 +905,7 @@ static bool openssh_pem_write( seq = strbuf_new(); for (i = 0; i < nnumbers; i++) { put_ber_id_len(seq, 2, numbers[i].len, 0); - put_data(seq, numbers[i].ptr, numbers[i].len); + put_datapl(seq, numbers[i]); } put_ber_id_len(outblob, 16, seq->len, ASN1_CONSTRUCTED); put_data(outblob, seq->s, seq->len); diff --git a/marshal.c b/marshal.c index 06f6d631..0ecbd258 100644 --- a/marshal.c +++ b/marshal.c @@ -10,6 +10,11 @@ void BinarySink_put_data(BinarySink *bs, const void *data, size_t len) bs->write(bs, data, len); } +void BinarySink_put_datapl(BinarySink *bs, ptrlen pl) +{ + BinarySink_put_data(bs, pl.ptr, pl.len); +} + void BinarySink_put_padding(BinarySink *bs, size_t len, unsigned char padbyte) { char buf[16]; diff --git a/marshal.h b/marshal.h index 400354c4..3c3467d2 100644 --- a/marshal.h +++ b/marshal.h @@ -128,6 +128,8 @@ struct BinarySink { * rest of these macros. */ #define put_data(bs, val, len) \ BinarySink_put_data(BinarySink_UPCAST(bs), val, len) +#define put_datapl(bs, pl) \ + BinarySink_put_datapl(BinarySink_UPCAST(bs), pl) /* * The underlying real C functions that implement most of those @@ -140,6 +142,7 @@ struct BinarySink { * declaration(s) of their other parameter type(s) are in scope. */ void BinarySink_put_data(BinarySink *, const void *data, size_t len); +void BinarySink_put_datapl(BinarySink *, ptrlen); void BinarySink_put_padding(BinarySink *, size_t len, unsigned char padbyte); void BinarySink_put_byte(BinarySink *, unsigned char); void BinarySink_put_bool(BinarySink *, bool); diff --git a/pageant.c b/pageant.c index ebd56b03..6c080bea 100644 --- a/pageant.c +++ b/pageant.c @@ -269,7 +269,7 @@ void pageant_handle_msg(BinarySink *bs, MD5Init(&md5c); for (i = 0; i < 32; i++) put_byte(&md5c, mp_get_byte(response, 31 - i)); - put_data(&md5c, session_id.ptr, session_id.len); + put_datapl(&md5c, session_id); MD5Final(response_md5, &md5c); put_byte(bs, SSH1_AGENT_RSA_RESPONSE); @@ -1388,7 +1388,7 @@ int pageant_enum_keys(pageant_key_enum_fn_t callback, void *callback_ctx, fingerprint = ssh2_fingerprint_blob(pubblob.ptr, pubblob.len); cbkey.blob = strbuf_new(); - put_data(cbkey.blob, pubblob.ptr, pubblob.len); + put_datapl(cbkey.blob, pubblob); cbkey.ssh_version = 2; cbkey.comment = mkstr(comment); diff --git a/scpserver.c b/scpserver.c index 42439159..b61296cb 100644 --- a/scpserver.c +++ b/scpserver.c @@ -1133,14 +1133,13 @@ static void scp_sink_coroutine(ScpSink *scp) ptrlen leafname = make_ptrlen( p, scp->command->len - (p - scp->command->s)); scp->filename_sb->len = 0; - put_data(scp->filename_sb, scp->head->destpath.ptr, - scp->head->destpath.len); + put_datapl(scp->filename_sb, scp->head->destpath); if (scp->head->isdir) { if (scp->filename_sb->len > 0 && scp->filename_sb->s[scp->filename_sb->len-1] != '/') put_byte(scp->filename_sb, '/'); - put_data(scp->filename_sb, leafname.ptr, leafname.len); + put_datapl(scp->filename_sb, leafname); } scp->filename = ptrlen_from_strbuf(scp->filename_sb); diff --git a/ssh2userauth-server.c b/ssh2userauth-server.c index d28176ea..465a710f 100644 --- a/ssh2userauth-server.c +++ b/ssh2userauth-server.c @@ -107,7 +107,7 @@ static void ssh2_userauth_server_add_session_id( struct ssh2_userauth_server_state *s, strbuf *sigdata) { if (s->ppl.remote_bugs & BUG_SSH2_PK_SESSIONID) { - put_data(sigdata, s->session_id.ptr, s->session_id.len); + put_datapl(sigdata, s->session_id); } else { put_stringpl(sigdata, s->session_id); } diff --git a/ssh2userauth.c b/ssh2userauth.c index 545bf29f..d79ab5bd 100644 --- a/ssh2userauth.c +++ b/ssh2userauth.c @@ -570,7 +570,7 @@ static void ssh2_userauth_process_queue(PacketProtocolLayer *ppl) * Save the methods string for use in error messages. */ s->last_methods_string->len = 0; - put_data(s->last_methods_string, methods.ptr, methods.len); + put_datapl(s->last_methods_string, methods); /* * Scan it for method identifiers we know about. @@ -1557,7 +1557,7 @@ static void ssh2_userauth_add_session_id( struct ssh2_userauth_state *s, strbuf *sigdata) { if (s->ppl.remote_bugs & BUG_SSH2_PK_SESSIONID) { - put_data(sigdata, s->session_id.ptr, s->session_id.len); + put_datapl(sigdata, s->session_id); } else { put_stringpl(sigdata, s->session_id); } @@ -1643,7 +1643,7 @@ static void ssh2_userauth_add_sigblob( put_data(substr, sigblob.ptr, sig_prefix_len); put_uint32(substr, mod_mp.len); put_padding(substr, mod_mp.len - sig_mp.len, 0); - put_data(substr, sig_mp.ptr, sig_mp.len); + put_datapl(substr, sig_mp); put_stringsb(pkt, substr); return; } diff --git a/sshecc.c b/sshecc.c index 6a30d55f..7d7b13da 100644 --- a/sshecc.c +++ b/sshecc.c @@ -773,8 +773,8 @@ static void eddsa_openssh_blob(ssh_key *key, BinarySink *bs) /* Encode the private key as the concatenation of the * little-endian key integer and the public key again */ put_uint32(bs, priv.len + pub.len); - put_data(bs, priv.ptr, priv.len); - put_data(bs, pub.ptr, pub.len); + put_datapl(bs, priv); + put_datapl(bs, pub); strbuf_free(pub_sb); strbuf_free(priv_sb); @@ -828,7 +828,7 @@ static mp_int *ecdsa_signing_exponent_from_data( /* Hash the data being signed. */ unsigned char hash[MAX_HASH_LEN]; ssh_hash *h = ssh_hash_new(extra->hash); - put_data(h, data.ptr, data.len); + put_datapl(h, data); ssh_hash_final(h, hash); /* @@ -921,9 +921,9 @@ static mp_int *eddsa_signing_exponent_from_data( /* Hash (r || public key || message) */ unsigned char hash[MAX_HASH_LEN]; ssh_hash *h = ssh_hash_new(extra->hash); - put_data(h, r_encoded.ptr, r_encoded.len); + put_datapl(h, r_encoded); put_epoint(h, ek->publicKey, ek->curve, true); /* omit string header */ - put_data(h, data.ptr, data.len); + put_datapl(h, data); ssh_hash_final(h, hash); /* Convert to an integer */ diff --git a/sshrsa.c b/sshrsa.c index ae3087bb..7558abdd 100644 --- a/sshrsa.c +++ b/sshrsa.c @@ -592,7 +592,7 @@ static unsigned char *rsa_pkcs1_signature_string( memcpy(bytes + 2 + padding, asn1_prefix, asn1_prefix_size); ssh_hash *h = ssh_hash_new(halg); - put_data(h, data.ptr, data.len); + put_datapl(h, data); ssh_hash_final(h, bytes + 2 + padding + asn1_prefix_size); return bytes; diff --git a/x11fwd.c b/x11fwd.c index 3d0356a3..8f8e3972 100644 --- a/x11fwd.c +++ b/x11fwd.c @@ -454,7 +454,7 @@ void BinarySink_put_stringpl_xauth(BinarySink *bs, ptrlen pl) { assert((pl.len >> 16) == 0); put_uint16(bs, pl.len); - put_data(bs, pl.ptr, pl.len); + put_datapl(bs, pl); } #define put_stringpl_xauth(bs, ptrlen) \ BinarySink_put_stringpl_xauth(BinarySink_UPCAST(bs),ptrlen)