* Parse a zero-ended string. */
| 11042 | * Parse a zero-ended string. |
| 11043 | */ |
| 11044 | static int |
| 11045 | parse_string0(struct context *ctx, const struct token *token __rte_unused, |
| 11046 | const char *str, unsigned int len, |
| 11047 | void *buf, unsigned int size) |
| 11048 | { |
| 11049 | const struct arg *arg_data = pop_args(ctx); |
| 11050 | |
| 11051 | /* Arguments are expected. */ |
| 11052 | if (!arg_data) |
| 11053 | return -1; |
| 11054 | size = arg_data->size; |
| 11055 | /* Bit-mask fill is not supported. */ |
| 11056 | if (arg_data->mask || size < len + 1) |
| 11057 | goto error; |
| 11058 | if (!ctx->object) |
| 11059 | return len; |
| 11060 | buf = (uint8_t *)ctx->object + arg_data->offset; |
| 11061 | strncpy(buf, str, len); |
| 11062 | if (ctx->objmask) |
| 11063 | memset((uint8_t *)ctx->objmask + arg_data->offset, 0xff, len); |
| 11064 | return len; |
| 11065 | error: |
| 11066 | push_args(ctx, arg_data); |
| 11067 | return -1; |
| 11068 | } |
| 11069 | |
| 11070 | /** |
| 11071 | * Parse a MAC address. |