関数 | |
NTSTATUS | parse_gpt_ini (TALLOC_CTX *mem_ctx, const char *filename, uint32 *version, char **display_name) |
static NTSTATUS | parse_gpttmpl (dictionary *d, uint32 *version_out) |
static NTSTATUS | parse_gpttmpl_system_access (const char *filename) |
static NTSTATUS | parse_gpttmpl_kerberos_policy (const char *filename) |
NTSTATUS parse_gpt_ini | ( | TALLOC_CTX * | mem_ctx, | |
const char * | filename, | |||
uint32 * | version, | |||
char ** | display_name | |||
) |
gpo_parse.c の 32 行で定義されています。
参照先 iniparser_freedict()・iniparser_getint()・iniparser_getstring()・iniparser_load()・name・result・talloc_strdup().
参照元 ads_gpo_get_sysvol_gpt_version().
00033 { 00034 NTSTATUS result; 00035 uint32 v; 00036 char *name = NULL; 00037 dictionary *d; 00038 00039 d = iniparser_load(filename); 00040 if (d == NULL) { 00041 return NT_STATUS_NO_SUCH_FILE; 00042 } 00043 00044 if ((name = iniparser_getstring(d, GPT_INI_SECTION_GENERAL 00045 ":"GPT_INI_PARAMETER_DISPLAYNAME, NULL)) == NULL) { 00046 /* the default domain policy and the default domain controller 00047 * policy never have a displayname in their gpt.ini file */ 00048 DEBUG(10,("parse_gpt_ini: no name in %s\n", filename)); 00049 } 00050 00051 if (name && display_name) { 00052 *display_name = talloc_strdup(mem_ctx, name); 00053 if (*display_name == NULL) { 00054 result = NT_STATUS_NO_MEMORY; 00055 goto out; 00056 } 00057 } 00058 00059 if ((v = iniparser_getint(d, GPT_INI_SECTION_GENERAL 00060 ":"GPT_INI_PARAMETER_VERSION, Undefined)) == Undefined) { 00061 DEBUG(10,("parse_gpt_ini: no version\n")); 00062 result = NT_STATUS_INTERNAL_DB_CORRUPTION; 00063 goto out; 00064 } 00065 00066 if (version) { 00067 *version = v; 00068 } 00069 00070 result = NT_STATUS_OK; 00071 out: 00072 if (d) { 00073 iniparser_freedict(d); 00074 } 00075 00076 return result; 00077 }
static NTSTATUS parse_gpttmpl | ( | dictionary * | d, | |
uint32 * | version_out | |||
) | [static] |
gpo_parse.c の 92 行で定義されています。
参照先 iniparser_getboolean()・iniparser_getint()・iniparser_getstring()・strequal().
参照元 parse_gpttmpl_kerberos_policy()・parse_gpttmpl_system_access().
00093 { 00094 const char *signature = NULL; 00095 uint32 version; 00096 00097 if ((signature = iniparser_getstring(d, GPTTMPL_SECTION_VERSION 00098 ":"GPTTMPL_PARAMETER_SIGNATURE, NULL)) == NULL) { 00099 return NT_STATUS_INTERNAL_DB_CORRUPTION; 00100 } 00101 00102 if (!strequal(signature, GPTTMPL_CHICAGO)) { 00103 return NT_STATUS_INTERNAL_DB_CORRUPTION; 00104 } 00105 00106 if ((version = iniparser_getint(d, GPTTMPL_SECTION_VERSION 00107 ":"GPTTMPL_PARAMETER_REVISION, Undefined)) == Undefined) { 00108 return NT_STATUS_INTERNAL_DB_CORRUPTION; 00109 } 00110 00111 if (version_out) { 00112 *version_out = version; 00113 } 00114 00115 /* treat that as boolean */ 00116 if ((!iniparser_getboolean(d, GPTTMPL_SECTION_UNICODE 00117 ":"GPTTMPL_PARAMETER_UNICODE, Undefined)) == Undefined) { 00118 return NT_STATUS_INTERNAL_DB_CORRUPTION; 00119 } 00120 00121 return NT_STATUS_OK; 00122 }
static NTSTATUS parse_gpttmpl_system_access | ( | const char * | filename | ) | [static] |
gpo_parse.c の 136 行で定義されています。
参照先 iniparser_freedict()・iniparser_getboolean()・iniparser_getint()・iniparser_load()・parse_gpttmpl()・status.
00137 { 00138 NTSTATUS status; 00139 dictionary *d = NULL; 00140 uint32 pwd_min_age, pwd_max_age, pwd_min_len, pwd_history; 00141 uint32 lockout_count; 00142 BOOL pwd_complex; 00143 uint32 version; 00144 00145 d = iniparser_load(filename); 00146 if (d == NULL) { 00147 return NT_STATUS_NO_SUCH_FILE; 00148 } 00149 00150 status = parse_gpttmpl(d, &version); 00151 if (!NT_STATUS_IS_OK(status)) { 00152 goto out; 00153 } 00154 00155 status = NT_STATUS_INVALID_PARAMETER; 00156 00157 if ((pwd_min_age = iniparser_getint(d, GPTTMPL_SECTION_SYSTEM_ACCESS 00158 ":"GPTTMPL_PARAMETER_MINPWDAGE, Undefined)) == Undefined) { 00159 goto out; 00160 } 00161 00162 if ((pwd_max_age = iniparser_getint(d, GPTTMPL_SECTION_SYSTEM_ACCESS 00163 ":"GPTTMPL_PARAMETER_MINPWDAGE, Undefined)) == Undefined) { 00164 goto out; 00165 } 00166 00167 if ((pwd_min_len = iniparser_getint(d, GPTTMPL_SECTION_SYSTEM_ACCESS 00168 ":"GPTTMPL_PARAMETER_MINPWDLEN, Undefined)) == Undefined) { 00169 goto out; 00170 } 00171 00172 if ((pwd_complex = iniparser_getboolean(d, GPTTMPL_SECTION_SYSTEM_ACCESS 00173 ":"GPTTMPL_PARAMETER_PWDCOMPLEX, Undefined)) == Undefined) { 00174 goto out; 00175 } 00176 00177 if ((pwd_history = iniparser_getint(d, GPTTMPL_SECTION_SYSTEM_ACCESS 00178 ":"GPTTMPL_PARAMETER_PWDHISTORY, Undefined)) == Undefined) { 00179 goto out; 00180 } 00181 00182 if ((lockout_count = iniparser_getint(d, GPTTMPL_SECTION_SYSTEM_ACCESS 00183 ":"GPTTMPL_PARAMETER_LOCKOUTCOUNT, Undefined)) == Undefined) { 00184 goto out; 00185 } 00186 00187 /* TODO ? 00188 RequireLogonToChangePassword = 0 00189 ForceLogoffWhenHourExpire = 0 00190 ClearTextPassword = 0 00191 */ 00192 00193 status = NT_STATUS_OK; 00194 00195 out: 00196 if (d) { 00197 iniparser_freedict(d); 00198 } 00199 00200 return status; 00201 }
static NTSTATUS parse_gpttmpl_kerberos_policy | ( | const char * | filename | ) | [static] |
gpo_parse.c の 214 行で定義されています。
参照先 iniparser_freedict()・iniparser_getboolean()・iniparser_getint()・iniparser_load()・parse_gpttmpl()・status.
00215 { 00216 NTSTATUS status; 00217 dictionary *d = NULL; 00218 uint32 tkt_max_age, tkt_max_renew, tgs_max_age, max_clock_skew; 00219 BOOL tkt_validate; 00220 uint32 version; 00221 00222 d = iniparser_load(filename); 00223 if (d == NULL) { 00224 return NT_STATUS_NO_SUCH_FILE; 00225 } 00226 00227 status = parse_gpttmpl(d, &version); 00228 if (!NT_STATUS_IS_OK(status)) { 00229 goto out; 00230 } 00231 00232 status = NT_STATUS_INVALID_PARAMETER; 00233 00234 if ((tkt_max_age = iniparser_getint(d, GPTTMPL_SECTION_KERBEROS_POLICY 00235 ":"GPTTMPL_PARAMETER_MAXTKTAGE, Undefined)) != Undefined) { 00236 goto out; 00237 } 00238 00239 if ((tkt_max_renew = iniparser_getint(d, GPTTMPL_SECTION_KERBEROS_POLICY 00240 ":"GPTTMPL_PARAMETER_MAXRENEWAGE, Undefined)) != Undefined) { 00241 goto out; 00242 } 00243 00244 if ((tgs_max_age = iniparser_getint(d, GPTTMPL_SECTION_KERBEROS_POLICY 00245 ":"GPTTMPL_PARAMETER_MAXTGSAGE, Undefined)) != Undefined) { 00246 goto out; 00247 } 00248 00249 if ((max_clock_skew = iniparser_getint(d, GPTTMPL_SECTION_KERBEROS_POLICY 00250 ":"GPTTMPL_PARAMETER_MAXCLOCKSKEW, Undefined)) != Undefined) { 00251 goto out; 00252 } 00253 00254 if ((tkt_validate = iniparser_getboolean(d, GPTTMPL_SECTION_KERBEROS_POLICY 00255 ":"GPTTMPL_PARAMETER_TKTVALIDATECLIENT, Undefined)) != Undefined) { 00256 goto out; 00257 } 00258 00259 status = NT_STATUS_OK; 00260 00261 out: 00262 if (d) { 00263 iniparser_freedict(d); 00264 } 00265 00266 return status; 00267 }