session MAINTENANCE minor enhancements
diff --git a/src/messages_client.c b/src/messages_client.c
index ee01a57..d6ec444 100644
--- a/src/messages_client.c
+++ b/src/messages_client.c
@@ -36,6 +36,11 @@
API NC_RPC_TYPE
nc_rpc_get_type(const struct nc_rpc *rpc)
{
+ if (!rpc) {
+ ERRARG;
+ return 0;
+ }
+
return rpc->type;
}
@@ -44,6 +49,11 @@
{
struct nc_rpc_generic *rpc;
+ if (!data) {
+ ERRARG;
+ return NULL;
+ }
+
if (data->next || (data->prev != data)) {
ERR("Generic RPC must have a single root node.");
return NULL;
@@ -72,6 +82,11 @@
{
struct nc_rpc_generic *rpc;
+ if (!xml_str) {
+ ERRARG;
+ return NULL;
+ }
+
rpc = malloc(sizeof *rpc);
if (!rpc) {
ERRMEM;
@@ -95,6 +110,11 @@
{
struct nc_rpc_getconfig *rpc;
+ if (!source) {
+ ERRARG;
+ return NULL;
+ }
+
if (filter && (filter[0] != '<') && (filter[0] != '/') && !isalpha(filter[0])) {
ERR("Filter must either be an XML subtree or an XPath expression.");
return NULL;
@@ -125,6 +145,11 @@
{
struct nc_rpc_edit *rpc;
+ if (!target || !edit_content) {
+ ERRARG;
+ return NULL;
+ }
+
if ((edit_content[0] != '<') && !isalpha(edit_content[0])) {
ERR("<edit-config> content must either be a URL or a config (XML).");
return NULL;
@@ -157,6 +182,11 @@
{
struct nc_rpc_copy *rpc;
+ if (!target || !source) {
+ ERRARG;
+ return NULL;
+ }
+
if (url_or_config_src && (url_or_config_src[0] != '<') && !isalpha(url_or_config_src[0])) {
ERR("<copy-config> source is neither a URL nor a config (XML).");
return NULL;
@@ -192,6 +222,11 @@
{
struct nc_rpc_delete *rpc;
+ if (!target) {
+ ERRARG;
+ return NULL;
+ }
+
rpc = malloc(sizeof *rpc);
if (!rpc) {
ERRMEM;
@@ -215,6 +250,11 @@
{
struct nc_rpc_lock *rpc;
+ if (!target) {
+ ERRARG;
+ return NULL;
+ }
+
rpc = malloc(sizeof *rpc);
if (!rpc) {
ERRMEM;
@@ -232,6 +272,11 @@
{
struct nc_rpc_lock *rpc;
+ if (!target) {
+ ERRARG;
+ return NULL;
+ }
+
rpc = malloc(sizeof *rpc);
if (!rpc) {
ERRMEM;
@@ -277,6 +322,11 @@
{
struct nc_rpc_kill *rpc;
+ if (!session_id) {
+ ERRARG;
+ return NULL;
+ }
+
rpc = malloc(sizeof *rpc);
if (!rpc) {
ERRMEM;
@@ -362,6 +412,11 @@
{
struct nc_rpc_validate *rpc;
+ if (!source) {
+ ERRARG;
+ return NULL;
+ }
+
if (url_or_config && (url_or_config[0] != '<') && !isalpha(url_or_config[0])) {
ERR("<validate> source is neither a URL nor a config (XML).");
return NULL;
@@ -390,6 +445,11 @@
{
struct nc_rpc_getschema *rpc;
+ if (!identifier) {
+ ERRARG;
+ return NULL;
+ }
+
rpc = malloc(sizeof *rpc);
if (!rpc) {
ERRMEM;
@@ -556,10 +616,7 @@
free(rpc_subscribe->stop);
}
break;
- case NC_RPC_KILL:
- case NC_RPC_DISCARD:
- case NC_RPC_LOCK:
- case NC_RPC_UNLOCK:
+ default:
/* nothing special needed */
break;
}