mirror of
https://dev.iopsys.eu/bbf/bbfdm.git
synced 2025-12-10 07:44:39 +01:00
Return error if the called path is invalid wildcard path
This commit is contained in:
parent
c6244449c0
commit
ea8afbf980
2 changed files with 14 additions and 9 deletions
|
|
@ -275,15 +275,10 @@ int dm_entry_param_method(struct dmctx *ctx, int cmd, char *inparam, char *arg1,
|
||||||
|
|
||||||
switch(cmd) {
|
switch(cmd) {
|
||||||
case CMD_GET_VALUE:
|
case CMD_GET_VALUE:
|
||||||
if (ctx->in_param[0] == '.' && DM_STRLEN(ctx->in_param) == 1)
|
|
||||||
fault = FAULT_9005;
|
|
||||||
else
|
|
||||||
fault = dm_entry_get_value(ctx);
|
fault = dm_entry_get_value(ctx);
|
||||||
break;
|
break;
|
||||||
case CMD_GET_NAME:
|
case CMD_GET_NAME:
|
||||||
if (ctx->in_param[0] == '.' && DM_STRLEN(ctx->in_param) == 1)
|
if (arg1 && string_to_bool(arg1, &ctx->nextlevel) == 0)
|
||||||
fault = FAULT_9005;
|
|
||||||
else if (arg1 && string_to_bool(arg1, &ctx->nextlevel) == 0)
|
|
||||||
fault = dm_entry_get_name(ctx);
|
fault = dm_entry_get_name(ctx);
|
||||||
else
|
else
|
||||||
fault = FAULT_9003;
|
fault = FAULT_9003;
|
||||||
|
|
|
||||||
|
|
@ -1296,6 +1296,11 @@ int dm_entry_get_value(struct dmctx *dmctx)
|
||||||
unsigned char findparam_check = 0;
|
unsigned char findparam_check = 0;
|
||||||
DMOBJ *root = dmctx->dm_entryobj;
|
DMOBJ *root = dmctx->dm_entryobj;
|
||||||
DMNODE node = {.current_object = ""};
|
DMNODE node = {.current_object = ""};
|
||||||
|
unsigned int len = DM_STRLEN(dmctx->in_param);
|
||||||
|
|
||||||
|
if ((len > 2 && dmctx->in_param[len - 1] == '.' && dmctx->in_param[len - 2] == '*') ||
|
||||||
|
(dmctx->in_param[0] == '.' && len == 1))
|
||||||
|
return FAULT_9005;
|
||||||
|
|
||||||
if (dmctx->in_param[0] == '\0' || rootcmp(dmctx->in_param, root->obj) == 0) {
|
if (dmctx->in_param[0] == '\0' || rootcmp(dmctx->in_param, root->obj) == 0) {
|
||||||
dmctx->inparam_isparam = 0;
|
dmctx->inparam_isparam = 0;
|
||||||
|
|
@ -1306,7 +1311,7 @@ int dm_entry_get_value(struct dmctx *dmctx)
|
||||||
dmctx->findparam = 1;
|
dmctx->findparam = 1;
|
||||||
dmctx->stop = 0;
|
dmctx->stop = 0;
|
||||||
findparam_check = 1;
|
findparam_check = 1;
|
||||||
} else if (dmctx->in_param[DM_STRLEN(dmctx->in_param) - 1] == '.') {
|
} else if (dmctx->in_param[len - 1] == '.') {
|
||||||
dmctx->inparam_isparam = 0;
|
dmctx->inparam_isparam = 0;
|
||||||
dmctx->findparam = 0;
|
dmctx->findparam = 0;
|
||||||
dmctx->stop = 0;
|
dmctx->stop = 0;
|
||||||
|
|
@ -1406,8 +1411,13 @@ int dm_entry_get_name(struct dmctx *ctx)
|
||||||
DMOBJ *root = ctx->dm_entryobj;
|
DMOBJ *root = ctx->dm_entryobj;
|
||||||
DMNODE node = {.current_object = ""};
|
DMNODE node = {.current_object = ""};
|
||||||
unsigned char findparam_check = 0;
|
unsigned char findparam_check = 0;
|
||||||
|
unsigned int len = DM_STRLEN(ctx->in_param);
|
||||||
int err = 0;
|
int err = 0;
|
||||||
|
|
||||||
|
if ((len > 2 && ctx->in_param[len - 1] == '.' && ctx->in_param[len - 2] == '*') ||
|
||||||
|
(ctx->in_param[0] == '.' && len == 1))
|
||||||
|
return FAULT_9005;
|
||||||
|
|
||||||
if (ctx->nextlevel == 0 && (ctx->in_param[0] == '\0' || rootcmp(ctx->in_param, root->obj) == 0)) {
|
if (ctx->nextlevel == 0 && (ctx->in_param[0] == '\0' || rootcmp(ctx->in_param, root->obj) == 0)) {
|
||||||
ctx->inparam_isparam = 0;
|
ctx->inparam_isparam = 0;
|
||||||
ctx->findparam = 1;
|
ctx->findparam = 1;
|
||||||
|
|
@ -1427,7 +1437,7 @@ int dm_entry_get_name(struct dmctx *ctx)
|
||||||
ctx->in_param = root->obj;
|
ctx->in_param = root->obj;
|
||||||
node.matched = 1;
|
node.matched = 1;
|
||||||
findparam_check = 1;
|
findparam_check = 1;
|
||||||
} else if (*(ctx->in_param + DM_STRLEN(ctx->in_param) - 1) == '.') {
|
} else if (*(ctx->in_param + len - 1) == '.') {
|
||||||
ctx->inparam_isparam = 0;
|
ctx->inparam_isparam = 0;
|
||||||
ctx->findparam = 0;
|
ctx->findparam = 0;
|
||||||
ctx->stop = 0;
|
ctx->stop = 0;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue