Skip to content

Commit 7cc36cd

Browse files
committed
tests BUGFIX check asprintf return
1 parent cb307de commit 7cc36cd

File tree

4 files changed

+56
-28
lines changed

4 files changed

+56
-28
lines changed

tests/np2_other_client.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -283,8 +283,7 @@ oc_send_msg(struct np_other_client *oc_sess, const char *msg)
283283
oc_sess->msgid = (oc_sess->msgid != 1) ? oc_sess->msgid + 1 : oc_sess->msgid;
284284

285285
msglen = strlen(msg);
286-
asprintf(&starttag, "\n#%" PRIu64 "\n", msglen);
287-
if (!starttag) {
286+
if (asprintf(&starttag, "\n#%" PRIu64 "\n", msglen) == -1) {
288287
OC_FAIL_LOG;
289288
return -1;
290289
}

tests/np2_test.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,10 @@ np2_glob_test_setup_sess_ctx(struct nc_session *sess, const char **modules)
180180
ctx = (struct ly_ctx *)nc_session_get_ctx(sess);
181181

182182
/* server YANG dir searchdir */
183-
asprintf(&path, "%s/yang", getenv("SYSREPO_REPOSITORY_PATH"));
183+
if (asprintf(&path, "%s/yang", getenv("SYSREPO_REPOSITORY_PATH")) == -1) {
184+
SETUP_FAIL_LOG;
185+
return 1;
186+
}
184187
ly_ctx_set_searchdir(ctx, path);
185188
free(path);
186189

tests/test_confirmed_commit.c

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,21 +61,24 @@ static char *
6161
notif_cc_event(const char *event, uint32_t ssid)
6262
{
6363
char *msg = NULL;
64+
int r;
6465

6566
/* Check data without 'timeout' leaf */
6667
if (!strcmp("timeout", event)) {
67-
asprintf(&msg,
68+
r = asprintf(&msg,
6869
"<netconf-confirmed-commit xmlns="TCC_NOTIF_XMLNS ">\n"
6970
" <confirm-event>timeout</confirm-event>\n"
7071
"</netconf-confirmed-commit>\n");
72+
assert_int_not_equal(r, -1);
7173
} else {
72-
asprintf(&msg,
74+
r = asprintf(&msg,
7375
"<netconf-confirmed-commit xmlns="TCC_NOTIF_XMLNS ">\n"
7476
" <username>%s</username>\n"
7577
" <session-id>%" PRIu32 "</session-id>\n"
7678
" <confirm-event>%s</confirm-event>\n"
7779
"</netconf-confirmed-commit>\n",
7880
np2_get_user(), ssid, event);
81+
assert_int_not_equal(r, -1);
7982
}
8083

8184
return msg;

tests/test_other_client.c

Lines changed: 46 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -77,28 +77,31 @@ test_message_id(void **state)
7777
struct np_other_client *sess = st->oc_sess;
7878

7979
/* send malformed message */
80-
asprintf(&msg,
80+
rc = asprintf(&msg,
8181
"<rpc xmlns=\"urn&ietf:params:xml:ns:netconf:base:1.0\" message-id=\"%" PRIu64 "\">"
8282
" <discard-changes/>"
8383
"</rpc>", sess->msgid);
84+
assert_int_not_equal(rc, -1);
8485
rc = oc_send_msg(sess, msg);
8586
assert_int_equal(rc, 0);
8687
free(msg);
8788
rc = oc_recv_msg(sess, &msg);
8889
assert_int_equal(rc, 0);
8990

9091
/* then send valid message */
91-
asprintf(&msg,
92+
rc = asprintf(&msg,
9293
"<rpc xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\" message-id=\"%" PRIu64 "\">"
9394
" <discard-changes/>"
9495
"</rpc>", sess->msgid);
96+
assert_int_not_equal(rc, -1);
9597
rc = oc_send_msg(sess, msg);
9698
assert_int_equal(rc, 0);
9799
free(msg);
98100
rc = oc_recv_msg(sess, &msg);
99101
assert_int_equal(rc, 0);
100-
asprintf(&exp, "<rpc-reply xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\""
102+
rc = asprintf(&exp, "<rpc-reply xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\""
101103
" message-id=\"%" PRIu64 "\"><ok/></rpc-reply>", sess->msgid);
104+
assert_int_not_equal(rc, -1);
102105
assert_string_equal(msg, exp);
103106
free(exp);
104107
}
@@ -130,10 +133,11 @@ test_missing_attribute(void **state)
130133
"</error-info></rpc-error></rpc-reply>");
131134

132135
/* missing attribute 'xmlns' in the rpc layer */
133-
asprintf(&msg,
136+
rc = asprintf(&msg,
134137
"<rpc message-id=\"%" PRIu64 "\">"
135138
" <discard-changes/>"
136139
"</rpc>", sess->msgid);
140+
assert_int_not_equal(rc, -1);
137141
rc = oc_send_msg(sess, msg);
138142
assert_int_equal(rc, 0);
139143
free(msg);
@@ -149,7 +153,7 @@ test_missing_attribute(void **state)
149153
"</rpc-error></rpc-reply>");
150154

151155
/* missing attribute 'select' in the protocol layer */
152-
asprintf(&msg,
156+
rc = asprintf(&msg,
153157
"<rpc xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\" message-id=\"%" PRIu64 "\">"
154158
" <get-config>"
155159
" <source>"
@@ -158,19 +162,21 @@ test_missing_attribute(void **state)
158162
" <filter type=\"xpath\"/>"
159163
" </get-config>"
160164
"</rpc>", sess->msgid);
165+
assert_int_not_equal(rc, -1);
161166
rc = oc_send_msg(sess, msg);
162167
assert_int_equal(rc, 0);
163168
free(msg);
164169
rc = oc_recv_msg(sess, &msg);
165170
assert_int_equal(rc, 0);
166-
asprintf(&exp,
171+
rc = asprintf(&exp,
167172
"<rpc-reply xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\" message-id=\"%" PRIu64 "\"><rpc-error>"
168173
"<error-type>protocol</error-type>"
169174
"<error-tag>missing-attribute</error-tag>"
170175
"<error-severity>error</error-severity>"
171176
"<error-message xml:lang=\"en\">An expected attribute is missing.</error-message>"
172177
"<error-info><bad-attribute>select</bad-attribute>"
173178
"<bad-element>filter</bad-element></error-info></rpc-error></rpc-reply>", sess->msgid);
179+
assert_int_not_equal(rc, -1);
174180
assert_string_equal(msg, exp);
175181
free(exp);
176182
}
@@ -186,32 +192,35 @@ test_unknown_attribute(void **state)
186192
/* unknown attribute 'att' in the rpc layer,
187193
* but in this case it's ok because rfc 6241 is benevolent towards attributes.
188194
*/
189-
asprintf(&msg,
195+
rc = asprintf(&msg,
190196
"<rpc att=\"4\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\" message-id=\"%" PRIu64 "\">"
191197
" <discard-changes/>"
192198
"</rpc>", sess->msgid);
199+
assert_int_not_equal(rc, -1);
193200
rc = oc_send_msg(sess, msg);
194201
assert_int_equal(rc, 0);
195202
free(msg);
196203
rc = oc_recv_msg(sess, &msg);
197204
assert_int_equal(rc, 0);
198-
asprintf(&exp,
205+
rc = asprintf(&exp,
199206
"<rpc-reply xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\" att=\"4\" message-id=\"%" PRIu64 "\">"
200207
"<ok/></rpc-reply>", sess->msgid);
208+
assert_int_not_equal(rc, -1);
201209
assert_string_equal(msg, exp);
202210
free(exp);
203211

204212
/* unknown attribute 'att' in the protocol layer: annotation not found */
205-
asprintf(&msg,
213+
rc = asprintf(&msg,
206214
"<rpc xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\" message-id=\"%" PRIu64 "\">"
207215
" <discard-changes xmlns:el=\"urn:ietf:params:xml:ns:netconf:base:1.0\" el:att=\"4\"/>"
208216
"</rpc>", sess->msgid);
217+
assert_int_not_equal(rc, -1);
209218
rc = oc_send_msg(sess, msg);
210219
assert_int_equal(rc, 0);
211220
free(msg);
212221
rc = oc_recv_msg(sess, &msg);
213222
assert_int_equal(rc, 0);
214-
asprintf(&exp,
223+
rc = asprintf(&exp,
215224
"<rpc-reply xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\" message-id=\"%" PRIu64 "\"><rpc-error>"
216225
"<error-type>protocol</error-type>"
217226
"<error-tag>unknown-attribute</error-tag>"
@@ -220,20 +229,22 @@ test_unknown_attribute(void **state)
220229
"<error-info><bad-attribute>att</bad-attribute>"
221230
"<bad-element>discard-changes</bad-element></error-info>"
222231
"</rpc-error></rpc-reply>", sess->msgid);
232+
assert_int_not_equal(rc, -1);
223233
assert_string_equal(msg, exp);
224234
free(exp);
225235

226236
/* unknown attribute 'att' in the protocol layer: missing prefix */
227-
asprintf(&msg,
237+
rc = asprintf(&msg,
228238
"<rpc xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\" message-id=\"%" PRIu64 "\">"
229239
" <discard-changes att=\"4\"/>"
230240
"</rpc>", sess->msgid);
241+
assert_int_not_equal(rc, -1);
231242
rc = oc_send_msg(sess, msg);
232243
assert_int_equal(rc, 0);
233244
free(msg);
234245
rc = oc_recv_msg(sess, &msg);
235246
assert_int_equal(rc, 0);
236-
asprintf(&exp,
247+
rc = asprintf(&exp,
237248
"<rpc-reply xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\" message-id=\"%" PRIu64 "\"><rpc-error>"
238249
"<error-type>protocol</error-type>"
239250
"<error-tag>unknown-attribute</error-tag>"
@@ -242,20 +253,22 @@ test_unknown_attribute(void **state)
242253
"<error-info><bad-attribute>att</bad-attribute>"
243254
"<bad-element>discard-changes</bad-element></error-info>"
244255
"</rpc-error></rpc-reply>", sess->msgid);
256+
assert_int_not_equal(rc, -1);
245257
assert_string_equal(msg, exp);
246258
free(exp);
247259

248260
/* unknown attribute 'att' in the protocol layer: unknown XML prefix */
249-
asprintf(&msg,
261+
rc = asprintf(&msg,
250262
"<rpc xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\" message-id=\"%" PRIu64 "\">"
251263
" <discard-changes el:att=\"4\"/>"
252264
"</rpc>", sess->msgid);
265+
assert_int_not_equal(rc, -1);
253266
rc = oc_send_msg(sess, msg);
254267
assert_int_equal(rc, 0);
255268
free(msg);
256269
rc = oc_recv_msg(sess, &msg);
257270
assert_int_equal(rc, 0);
258-
asprintf(&exp,
271+
rc = asprintf(&exp,
259272
"<rpc-reply xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\" message-id=\"%" PRIu64 "\"><rpc-error>"
260273
"<error-type>protocol</error-type>"
261274
"<error-tag>unknown-attribute</error-tag>"
@@ -264,6 +277,7 @@ test_unknown_attribute(void **state)
264277
"<error-info><bad-attribute>att</bad-attribute>"
265278
"<bad-element>discard-changes</bad-element></error-info>"
266279
"</rpc-error></rpc-reply>", sess->msgid);
280+
assert_int_not_equal(rc, -1);
267281
assert_string_equal(msg, exp);
268282
free(exp);
269283
}
@@ -277,18 +291,19 @@ test_missing_element(void **state)
277291
struct np_other_client *sess = st->oc_sess;
278292

279293
/* missing element in 'edit-content' in the protocol layer: missing mandatory node in the choice-stmt */
280-
asprintf(&msg,
294+
rc = asprintf(&msg,
281295
"<rpc xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\" message-id=\"%" PRIu64 "\">"
282296
" <edit-data xmlns=\"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda\">"
283297
" <datastore xmlns:ds=\"urn:ietf:params:xml:ns:yang:ietf-datastores\">ds:running</datastore>"
284298
" </edit-data>"
285299
"</rpc>", sess->msgid);
300+
assert_int_not_equal(rc, -1);
286301
rc = oc_send_msg(sess, msg);
287302
assert_int_equal(rc, 0);
288303
free(msg);
289304
rc = oc_recv_msg(sess, &msg);
290305
assert_int_equal(rc, 0);
291-
asprintf(&exp,
306+
rc = asprintf(&exp,
292307
"<rpc-reply xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\" message-id=\"%" PRIu64 "\"><rpc-error>"
293308
"<error-type>protocol</error-type>"
294309
"<error-tag>data-missing</error-tag>"
@@ -299,20 +314,22 @@ test_missing_element(void **state)
299314
"<error-info>"
300315
"<missing-choice xmlns=\"urn:ietf:params:xml:ns:yang:1\">edit-content</missing-choice>"
301316
"</error-info></rpc-error></rpc-reply>", sess->msgid);
317+
assert_int_not_equal(rc, -1);
302318
assert_string_equal(msg, exp);
303319
free(exp);
304320

305321
/* missing element 'identifier' in the protocol layer */
306-
asprintf(&msg,
322+
rc = asprintf(&msg,
307323
"<rpc xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\" message-id=\"%" PRIu64 "\">"
308324
" <get-schema xmlns=\"urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring\"/>"
309325
"</rpc>", sess->msgid);
326+
assert_int_not_equal(rc, -1);
310327
rc = oc_send_msg(sess, msg);
311328
assert_int_equal(rc, 0);
312329
free(msg);
313330
rc = oc_recv_msg(sess, &msg);
314331
assert_int_equal(rc, 0);
315-
asprintf(&exp,
332+
rc = asprintf(&exp,
316333
"<rpc-reply xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\" message-id=\"%" PRIu64 "\"><rpc-error>"
317334
"<error-type>protocol</error-type>"
318335
"<error-tag>missing-element</error-tag>"
@@ -321,22 +338,24 @@ test_missing_element(void **state)
321338
"<error-message xml:lang=\"en\">An expected element is missing.</error-message>"
322339
"<error-info><bad-element>identifier</bad-element></error-info>"
323340
"</rpc-error></rpc-reply>", sess->msgid);
341+
assert_int_not_equal(rc, -1);
324342
assert_string_equal(msg, exp);
325343
free(exp);
326344

327345
/* missing element in 'config-choice' in the application layer: missing mandatory node in the choice-stmt */
328-
asprintf(&msg,
346+
rc = asprintf(&msg,
329347
"<rpc xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\" message-id=\"%" PRIu64 "\">"
330348
" <get-config>"
331349
" <source/>"
332350
" </get-config>"
333351
"</rpc>", sess->msgid);
352+
assert_int_not_equal(rc, -1);
334353
rc = oc_send_msg(sess, msg);
335354
assert_int_equal(rc, 0);
336355
free(msg);
337356
rc = oc_recv_msg(sess, &msg);
338357
assert_int_equal(rc, 0);
339-
asprintf(&exp,
358+
rc = asprintf(&exp,
340359
"<rpc-reply xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\" message-id=\"%" PRIu64 "\"><rpc-error>"
341360
"<error-type>protocol</error-type>"
342361
"<error-tag>data-missing</error-tag>"
@@ -346,6 +365,7 @@ test_missing_element(void **state)
346365
"<error-message xml:lang=\"en\">Missing mandatory choice.</error-message>"
347366
"<error-info><missing-choice xmlns=\"urn:ietf:params:xml:ns:yang:1\">config-source</missing-choice></error-info>"
348367
"</rpc-error></rpc-reply>", sess->msgid);
368+
assert_int_not_equal(rc, -1);
349369
assert_string_equal(msg, exp);
350370
free(exp);
351371
}
@@ -359,10 +379,11 @@ test_malformed_message(void **state)
359379
struct np_other_client *sess = st->oc_sess;
360380

361381
/* malformed-message xmlns in the rpc layer */
362-
asprintf(&msg,
382+
rc = asprintf(&msg,
363383
"<rpc xmlns=\"urn&ietf:params:xml:ns:netconf:base:1.0\" message-id=\"%" PRIu64 "\">"
364384
" <discard-changes/>"
365385
"</rpc>", sess->msgid);
386+
assert_int_not_equal(rc, -1);
366387
rc = oc_send_msg(sess, msg);
367388
assert_int_equal(rc, 0);
368389
free(msg);
@@ -378,16 +399,17 @@ test_malformed_message(void **state)
378399
"</rpc-error></rpc-reply>");
379400

380401
/* malformed-message in the non-rpc layer */
381-
asprintf(&msg,
402+
rc = asprintf(&msg,
382403
"<rpc xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\" message-id=\"%" PRIu64 "\">"
383404
" <discard-cha&ges/>"
384405
"</rpc>", sess->msgid);
406+
assert_int_not_equal(rc, -1);
385407
rc = oc_send_msg(sess, msg);
386408
assert_int_equal(rc, 0);
387409
free(msg);
388410
rc = oc_recv_msg(sess, &msg);
389411
assert_int_equal(rc, 0);
390-
asprintf(&exp,
412+
rc = asprintf(&exp,
391413
"<rpc-reply xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\" message-id=\"%" PRIu64 "\">"
392414
"<rpc-error>"
393415
"<error-type>rpc</error-type>"
@@ -396,6 +418,7 @@ test_malformed_message(void **state)
396418
"<error-message xml:lang=\"en\">Invalid character sequence \"&amp;ges/&gt;&lt;/rpc&gt;\","
397419
" expected element tag end ('&gt;' or '/&gt;') or an attribute.</error-message>"
398420
"</rpc-error></rpc-reply>", sess->msgid);
421+
assert_int_not_equal(rc, -1);
399422
assert_string_equal(msg, exp);
400423
free(exp);
401424
}

0 commit comments

Comments
 (0)