Browse Source

MT#55283 initialise str objects with macros

Use provided macros for initrialise str objects everywhere instead of
manually setting .s and .len. This allows for flexibility to extend str
objects.

Change-Id: I5ebca0bc82b348301c2c8e94b974c7acbf249b82
pull/1870/head
Richard Fuchs 1 year ago
parent
commit
201c15489c
13 changed files with 30 additions and 52 deletions
  1. +1
    -2
      daemon/janus.c
  2. +1
    -2
      daemon/main.c
  3. +1
    -2
      daemon/media_socket.c
  4. +2
    -4
      daemon/sdp.c
  5. +1
    -2
      daemon/stun.c
  6. +4
    -2
      include/bencode.h
  7. +1
    -2
      lib/codeclib.c
  8. +2
    -4
      recording-daemon/db.c
  9. +8
    -16
      t/aead-aes-crypt.c
  10. +6
    -12
      t/aes-crypt.c
  11. +1
    -1
      t/test-amr-decode.c
  12. +1
    -1
      t/test-amr-encode.c
  13. +1
    -2
      t/test-transcode.c

+ 1
- 2
daemon/janus.c View File

@ -227,8 +227,7 @@ static const char *janus_videoroom_create(struct janus_session *session, struct
room->id = room_id;
if (t_hash_table_lookup(janus_rooms, &room->id))
continue;
room->call_id.s = janus_call_id(room_id);
room->call_id.len = strlen(room->call_id.s);
room->call_id = STR(janus_call_id(room_id));
call_t *call = call_get_or_create(&room->call_id, true);
if (!call) {
ilog(LOG_WARN, "Call with reserved Janus ID '" STR_FORMAT


+ 1
- 2
daemon/main.c View File

@ -774,8 +774,7 @@ static void options(int *argc, char ***argv) {
if (ks_a) {
for (iter = ks_a; *iter; iter++) {
str_keyspace_db.s = *iter;
str_keyspace_db.len = strlen(*iter);
str_keyspace_db = STR(*iter);
uint_keyspace_db = strtoul(str_keyspace_db.s, &endptr, 10);
if ((errno == ERANGE && (uint_keyspace_db == ULONG_MAX)) ||


+ 1
- 2
daemon/media_socket.c View File

@ -2267,8 +2267,7 @@ int media_packet_encrypt(rewrite_func encrypt_func, struct packet_stream *out, s
for (__auto_type l = mp->packets_out.head; l; l = l->next) {
struct codec_packet *p = l->data;
if (mp->call->recording && rtpe_config.rec_egress) {
p->plain.len = p->s.len;
p->plain.s = bufferpool_alloc(media_bufferpool, p->s.len);
p->plain = STR_LEN(bufferpool_alloc(media_bufferpool, p->s.len), p->s.len);
memcpy(p->plain.s, p->s.s, p->s.len);
p->plain_free_func = bufferpool_unref;
}


+ 2
- 4
daemon/sdp.c View File

@ -634,10 +634,8 @@ static int parse_attribute_crypto(struct sdp_attribute *output) {
if (ret != salt_key_len)
goto error;
c->master_key.s = c->key_salt_buf;
c->master_key.len = c->crypto_suite->master_key_len;
c->salt.s = c->master_key.s + c->master_key.len;
c->salt.len = c->crypto_suite->master_salt_len;
c->master_key = STR_LEN(c->key_salt_buf, c->crypto_suite->master_key_len);
c->salt = STR_LEN(c->master_key.s + c->master_key.len, c->crypto_suite->master_salt_len);
c->lifetime_str = c->key_params_str;
str_shift(&c->lifetime_str, 7 + enc_salt_key_len);


+ 1
- 2
daemon/stun.c View File

@ -599,8 +599,7 @@ int stun(const str *b, stream_fd *sfd, const endpoint_t *sin) {
if (class == STUN_CLASS_INDICATION)
return 0;
attr_str.s = &b->s[20];
attr_str.len = b->len - 20;
attr_str = STR_LEN(&b->s[20], b->len - 20);
if (stun_attributes(&attrs, &attr_str, unknowns, req)) {
err = "failed to parse attributes";
if (unknowns[0] == 0xffff)


+ 4
- 2
include/bencode.h View File

@ -367,6 +367,7 @@ INLINE char *bencode_strdup(bencode_buffer_t *buf, const char *s) {
}
INLINE void bencode_strdup_str(bencode_buffer_t *buf, str *o, const char *s) {
*o = STR_NULL;
o->len = strlen(s);
o->s = bencode_buffer_alloc(buf, o->len);
memcpy(o->s, s, o->len);
@ -453,6 +454,7 @@ INLINE char *bencode_dictionary_get_string(bencode_item_t *dict, const char *key
}
INLINE char *bencode_dictionary_get_str(bencode_item_t *dict, const char *key, str *s) {
*s = STR_NULL;
s->s = bencode_dictionary_get_string(dict, key, &s->len);
if (!s->s)
s->len = 0;
@ -473,6 +475,7 @@ INLINE char *bencode_dictionary_get_string_dup(bencode_item_t *dict, const char
}
INLINE char *bencode_dictionary_get_str_dup(bencode_item_t *dict, const char *key, str *s) {
*s = STR_NULL;
s->s = bencode_dictionary_get_string_dup(dict, key, &s->len);
return s->s;
}
@ -559,8 +562,7 @@ INLINE int bencode_dictionary_get_strcmp(bencode_item_t *dict, const char *key,
INLINE str *bencode_get_str(bencode_item_t *in, str *out) {
if (!in || in->type != BENCODE_STRING)
return NULL;
out->s = in->iov[1].iov_base;
out->len = in->iov[1].iov_len;
*out = STR_LEN(in->iov[1].iov_base, in->iov[1].iov_len);
return out;
}


+ 1
- 2
lib/codeclib.c View File

@ -4818,8 +4818,7 @@ static int evs_decoder_input(decoder_t *dec, const str *data, GQueue *out) {
// consume and shift
toc++;
int bytes = (bits + 7) / 8;
frame_data.s = input.s;
frame_data.len = bytes;
frame_data = STR_LEN(input.s, bytes);
err = "speech frame truncated";
if (str_shift(&input, bytes))
goto err;


+ 2
- 4
recording-daemon/db.c View File

@ -377,10 +377,8 @@ void db_close_stream(output_t *op) {
double now = now_double();
str stream;
MYSQL_BIND b[3];
stream.s = 0;
stream.len = 0;
str stream = STR_NULL;
MYSQL_BIND b[3];
if ((output_storage & OUTPUT_STORAGE_DB)) {
FILE *f = fopen(op->filename, "rb");


+ 8
- 16
t/aead-aes-crypt.c View File

@ -121,8 +121,7 @@ int main(void)
memcpy(ctx.session_salt, (uint8_t *)test_key + 32, 12);
memcpy(working, srtp_pt, 50);
payload.len = 38;
payload.s = (char *) working + 12;
payload = STR_LEN((char *) working + 12, 38);
rc = crypto_encrypt_rtp(&ctx, (struct rtp_header *)working,
&payload,
@ -131,8 +130,7 @@ int main(void)
assert(memcmp(working, answer128, 66) == 0);
printf("RTP/AEAD-AES-128-GCM Encrypt - PASS\n");
payload.len = 54;
payload.s = (char *) working + 12;
payload = STR_LEN((char *) working + 12, 54);
rc = crypto_decrypt_rtp(&ctx, (struct rtp_header *)working,
&payload,
@ -144,8 +142,7 @@ int main(void)
// RTCP
memcpy(working, srtcp_pt, 52);
payload.len = 44;
payload.s = (char *) working + 8;
payload = STR_LEN((char *) working + 8, 44);
rc = crypto_encrypt_rtcp(&ctx, (struct rtcp_packet *)working,
&payload,
@ -154,8 +151,7 @@ int main(void)
assert(memcmp(working, answer128_srtcp, 68) == 0);
printf("RTCP/AEAD-AES-128-GCM Encrypt - PASS\n");
payload.len = 60;
payload.s = (char *) working + 8;
payload = STR_LEN((char *) working + 8, 60);
rc = crypto_decrypt_rtcp(&ctx, (struct rtcp_packet *)working,
&payload,
@ -180,8 +176,7 @@ int main(void)
memcpy(ctx.session_salt, (uint8_t *)test_key + 32, 12);
memcpy(working, srtp_pt, 50);
payload.len = 38;
payload.s = (char *) working + 12;
payload = STR_LEN((char *) working + 12, 38);
rc = crypto_encrypt_rtp(&ctx, (struct rtp_header *)working,
&payload,
@ -190,8 +185,7 @@ int main(void)
assert(memcmp(working, answer256, 66) == 0);
printf("RTP/AEAD-AES-256-GCM Encrypt - PASS\n");
payload.len = 54;
payload.s = (char *) working + 12;
payload = STR_LEN((char *) working + 12, 54);
rc = crypto_decrypt_rtp(&ctx, (struct rtp_header *)working,
&payload,
@ -202,8 +196,7 @@ int main(void)
// RTCP
memcpy(working, srtcp_pt, 52);
payload.len = 44;
payload.s = (char *) working + 8;
payload = STR_LEN((char *) working + 8, 44);
rc = crypto_encrypt_rtcp(&ctx, (struct rtcp_packet *)working,
&payload,
@ -212,8 +205,7 @@ int main(void)
assert(memcmp(working, answer256_srtcp, 68) == 0);
printf("RTCP/AEAD-AES-256-GCM Encrypt - PASS\n");
payload.len = 60;
payload.s = (char *) working + 8;
payload = STR_LEN((char *) working + 8, 60);
rc = crypto_decrypt_rtcp(&ctx, (struct rtcp_packet *)working,
&payload,


+ 6
- 12
t/aes-crypt.c View File

@ -131,12 +131,10 @@ void srtp_validate (struct crypto_context *c, struct crypto_context *c2, char* m
memcpy(srtp_plaintext, plaintext, 28);
memcpy(srtp_ciphertext, ciphertext, 38);
// in-place crypto so we must encrypt first
payload.len = 16;
payload.s = srtp_plaintext+RTP_HEADER_LEN;
payload = STR_LEN(srtp_plaintext+RTP_HEADER_LEN, 16);
crypto_encrypt_rtp(c, (struct rtp_header *)srtp_plaintext, &payload, ntohs(((struct rtp_header *)srtp_plaintext)->seq_num));
hash.len = 28;
hash.s = srtp_plaintext;
hash = STR_LEN(srtp_plaintext, 28);
c->params.crypto_suite->hash_rtp(c, srtp_plaintext+28, &hash, ntohs(((struct rtp_header *)srtp_plaintext)->seq_num));
assert( memcmp(payload.s, srtp_ciphertext+RTP_HEADER_LEN, 26) == 0 );
@ -144,8 +142,7 @@ void srtp_validate (struct crypto_context *c, struct crypto_context *c2, char* m
hash.s = srtp_ciphertext;
c->params.crypto_suite->hash_rtp(c, o_hash, &hash, ntohs(((struct rtp_header *)srtp_plaintext)->seq_num));
payload.len = 16;
payload.s = srtp_ciphertext+RTP_HEADER_LEN;
payload = STR_LEN(srtp_ciphertext+RTP_HEADER_LEN, 16);
crypto_decrypt_rtp(c, (struct rtp_header *)srtp_ciphertext, &payload, ntohs(((struct rtp_header *)srtp_ciphertext)->seq_num));
assert( memcmp(payload.s, rtp_plaintext_ref+RTP_HEADER_LEN, 16) == 0 );
assert( memcmp(o_hash, srtp_ciphertext+RTP_HEADER_LEN+16, 10) == 0 );
@ -157,12 +154,10 @@ void srtp_validate (struct crypto_context *c, struct crypto_context *c2, char* m
memcpy(srtcp_plaintext, rtcp_plaintext, 24);
memcpy(srtcp_ciphertext, rtcp_ciphertext, 38);
memcpy(srtcp_plaintext+24, srtcp_ciphertext+24, 4);
payload.len = 16;
payload.s = srtcp_plaintext+RTCP_HEADER_LEN;
payload = STR_LEN(srtcp_plaintext+RTCP_HEADER_LEN, 16);
crypto_encrypt_rtcp(c2, (struct rtcp_packet *)srtcp_plaintext, &payload, 1);
hash.len = 28;
hash.s = srtcp_plaintext;
hash = STR_LEN(srtcp_plaintext, 28);
c->params.crypto_suite->hash_rtcp(c2, srtcp_plaintext+28, &hash);
assert( memcmp(payload.s, srtcp_ciphertext+RTCP_HEADER_LEN, 30) == 0 );
@ -170,8 +165,7 @@ void srtp_validate (struct crypto_context *c, struct crypto_context *c2, char* m
hash.s = srtcp_ciphertext;
c->params.crypto_suite->hash_rtcp(c2, o_hash, &hash);
payload.len = 16;
payload.s = srtcp_ciphertext+RTCP_HEADER_LEN;
payload = STR_LEN(srtcp_ciphertext+RTCP_HEADER_LEN, 16);
crypto_decrypt_rtcp(c2, (struct rtcp_packet *)srtcp_ciphertext, &payload, 1);
assert( memcmp(payload.s, rtcp_plaintext_ref+RTCP_HEADER_LEN, 16) == 0 );
assert( memcmp(o_hash, srtcp_ciphertext+RTCP_HEADER_LEN+16+4, 10) == 0 );


+ 1
- 1
t/test-amr-decode.c View File

@ -66,7 +66,7 @@ static void do_test_amr_xx(const char *file, int line,
fmtp = STR(fmtp_s);
decoder_t *d = decoder_new_fmtp(def, clockrate, 1, 0, &fmt, NULL, NULL, &fmtp);
assert(d);
const str data = { data_s, data_len };
const str data = STR_LEN(data_s, data_len);
int ret = decoder_input_data(d, &data, 1, frame_cb, &args, NULL);
assert(!ret);
assert(args.done == true);


+ 1
- 1
t/test-amr-encode.c View File

@ -23,7 +23,7 @@ static int dec_cb(encoder_t *e, void *u1, void *u2) {
GString *buf = g_string_new("");
int plen = 256;
char payload[plen];
str inout = { payload, plen };
str inout = STR_LEN(payload, plen);
e->def->packetizer(e->avpkt, buf, &inout, e);
if (inout.len != *expect_len


+ 1
- 2
t/test-transcode.c View File

@ -282,8 +282,7 @@ static void __packet_seq_ts(const char *file, int line, struct call_media *media
mp.payload = pl;
mp.payload.s = (packet + sizeof(struct rtp_header));
memcpy(mp.payload.s, pl.s, pl.len);
mp.raw.s = packet;
mp.raw.len = packet_len;
mp.raw = STR_LEN(packet, packet_len);
printf("send RTP SSRC %x seq %u TS %u PT %u\n", (unsigned int) ssrc,
(unsigned int) rtp_seq, (unsigned int) rtp_ts, (unsigned int) pt_in);
printf("send packet contents: ");


Loading…
Cancel
Save