| 1684 | } |
| 1685 | |
| 1686 | static int uidgid_config_parser_cb(const char *path, |
| 1687 | char *key, |
| 1688 | char *value, |
| 1689 | enum main_cp_cb_data_state *state, |
| 1690 | enum parser_cb_type type, |
| 1691 | const char **error_string, |
| 1692 | icmap_map_t config_map, |
| 1693 | void *user_data) |
| 1694 | { |
| 1695 | char key_name[ICMAP_KEYNAME_MAXLEN]; |
| 1696 | int uid, gid; |
| 1697 | static char formated_err[256]; |
| 1698 | cs_error_t cs_err; |
| 1699 | |
| 1700 | switch (type) { |
| 1701 | case PARSER_CB_START: |
| 1702 | break; |
| 1703 | case PARSER_CB_END: |
| 1704 | break; |
| 1705 | case PARSER_CB_CLEANUP: |
| 1706 | break; |
| 1707 | case PARSER_CB_ITEM: |
| 1708 | if (strcmp(path, "uidgid.uid") == 0) { |
| 1709 | uid = uid_determine(value); |
| 1710 | if (uid == -1) { |
| 1711 | *error_string = error_string_response; |
| 1712 | return (0); |
| 1713 | } |
| 1714 | snprintf(key_name, ICMAP_KEYNAME_MAXLEN, "uidgid.config.uid.%u", |
| 1715 | uid); |
| 1716 | if ((cs_err = icmap_set_uint8_r(config_map, key_name, 1)) != CS_OK) { |
| 1717 | goto icmap_set_error; |
| 1718 | } |
| 1719 | } else if (strcmp(path, "uidgid.gid") == 0) { |
| 1720 | gid = gid_determine(value); |
| 1721 | if (gid == -1) { |
| 1722 | *error_string = error_string_response; |
| 1723 | return (0); |
| 1724 | } |
| 1725 | snprintf(key_name, ICMAP_KEYNAME_MAXLEN, "uidgid.config.gid.%u", |
| 1726 | gid); |
| 1727 | if ((cs_err = icmap_set_uint8_r(config_map, key_name, 1)) != CS_OK) { |
| 1728 | goto icmap_set_error; |
| 1729 | } |
| 1730 | } else { |
| 1731 | *error_string = "uidgid: Only uid and gid are allowed items"; |
| 1732 | return (0); |
| 1733 | } |
| 1734 | break; |
| 1735 | case PARSER_CB_SECTION_START: |
| 1736 | if (strcmp(path, "uidgid") != 0) { |
| 1737 | *error_string = "uidgid: Can't add subsection different than uidgid"; |
| 1738 | return (0); |
| 1739 | }; |
| 1740 | break; |
| 1741 | case PARSER_CB_SECTION_END: |
| 1742 | break; |
| 1743 | } |
nothing calls this directly
no test coverage detected