On Sun, Dec 08, 2013 at 01:36:15AM +0545, Pallavi Jha wrote: > For your comment > > I think the checks below are not necessary, are they? You already test > sss_authtok_set with sss_authtok_get_ccfile and also > sss_authtok_set_ccfile with sss_authtok_get_ccfile. > > Maybe I'm not seeing something, but why another sss_authtok_set and > sss_authtok_get_ccfile? > > > + ret = sss_authtok_set(ts->authtoken, type, data, 0); > > + > > + assert_int_equal(ret, EOK); > > + assert_int_equal(type, sss_authtok_get_type(ts->authtoken)); > > + assert_int_equal(len, sss_authtok_get_size(ts->authtoken)); > > + assert_string_equal(data, sss_authtok_get_data(ts->authtoken)); > > + > > + ret = sss_authtok_get_ccfile(ts-> > authtoken, &pwd, &ret_len); > > + > > + assert_int_equal(ret, EOK); > > + assert_string_equal(data, pwd); > > + assert_int_equal(len - 1, ret_len); > > +} > > + > > +/* Test when type has value SSS_AUTHTOK_TYPE_EMPTY */ > > > Here I have tested what will happen when length is zero. Previously it was > not tested. I have made the changes. Kindly review the patch.
Ah, thanks for explanation. > > With regards > Pallavi Kumari Jha > Computer Science Engineering There is still some changes that need to be done, the current version of the patch crashes for me. See below: > +/* @test_authtok_type_x : tests following functions for different value of > type > + * sss_authtok_set > + * sss_authtok_get_type > + * sss_authtok_get_size > + * sss_authtok_get_data > + * sss_authtok_get_password > + * sss_authtok_get_ccfile > + * > + * @test_authtok_type_password : type => SSS_AUTHTOK_TYPE_PASSWORD > + * @test_authtok_type_ccfile : type => SSS_AUTHTOK_TYPE_CCFILE > + * @test_authtok_type_empty : type => SSS_AUTHTOK_TYPE_EMPTY > + */ > + > +/* Test when type has value SSS_AUTHTOK_TYPE_PASSWORD */ > +static void test_sss_authtok_password(void **state) > +{ > + size_t len; > + errno_t ret; > + const char *data; > + size_t ret_len; > + const char *pwd; > + struct test_state *ts; > + enum sss_authtok_type type; > + > + data = talloc_strdup(ts, "password"); Here you use "ts" before initializing it. You need to call talloc_get_type_abort before the first use of ts. > + assert_non_null(data); > + > + len = strlen(data) + 1; > + type = SSS_AUTHTOK_TYPE_PASSWORD; > + ts = talloc_get_type_abort(*state, struct test_state); > + ret = sss_authtok_set(ts->authtoken, type, (uint8_t *)data, len); > + > + assert_int_equal(ret, EOK); > + assert_int_equal(type, sss_authtok_get_type(ts->authtoken)); > + assert_int_equal(len, sss_authtok_get_size(ts->authtoken)); > + assert_string_equal(data, sss_authtok_get_data(ts->authtoken)); > + > + ret = sss_authtok_get_password(ts->authtoken, &pwd, &ret_len); > + > + assert_int_equal(ret, EOK); > + assert_string_equal(data, pwd); > + assert_int_equal(len - 1, ret_len); > + > + ret = sss_authtok_set_password(ts->authtoken, data, len); > + > + assert_int_equal(ret, EOK); > + ret = sss_authtok_get_password(ts->authtoken, &pwd, &ret_len); > + assert_int_equal(ret, EOK); > + assert_string_equal(data, pwd); > + assert_int_equal(len - 1, ret_len); > +} > + > +/* Test when type has value SSS_AUTHTOK_TYPE_CCFILE */ > +static void test_sss_authtok_ccfile(void **state) > +{ > + size_t len; > + errno_t ret; > + const char *data; > + size_t ret_len; > + const char *pwd; > + struct test_state *ts; > + enum sss_authtok_type type; > + > + data = talloc_strdup(ts, "path/to/cc_file"); Here ts is used uninitialized as well. > + assert_non_null(data); > + > + len = strlen(data) + 1; > + type = SSS_AUTHTOK_TYPE_CCFILE; > + ts = talloc_get_type_abort(*state, struct test_state); > + ret = sss_authtok_set(ts->authtoken, type, (uint8_t *)data, len); > + > + assert_int_equal(ret, EOK); > + assert_int_equal(type, sss_authtok_get_type(ts->authtoken)); > + assert_int_equal(len, sss_authtok_get_size(ts->authtoken)); > + assert_string_equal(data, sss_authtok_get_data(ts->authtoken)); > + > + ret = sss_authtok_get_ccfile(ts->authtoken, &pwd, &ret_len); > + > + assert_int_equal(ret, EOK); > + assert_string_equal(data, pwd); > + assert_int_equal(len - 1, ret_len); > + > + ret = sss_authtok_set_ccfile(ts->authtoken, data, len); This line was giving me a compilation warning because data is const char and set_ccfile expects uint8_t. You can simple cast data to uint8_t * ret = sss_authtok_set_ccfile(ts->authtoken, (uint8_t *) data, len); > + > + assert_int_equal(ret, EOK); > + > + ret = sss_authtok_get_ccfile(ts->authtoken, &pwd, &ret_len); > + > + assert_int_equal(ret, EOK); > + assert_string_equal(data, pwd); > + assert_int_equal(len - 1, ret_len); > + > + > + ret = sss_authtok_set(ts->authtoken, type, data, 0); > + > + assert_int_equal(ret, EOK); > + assert_int_equal(type, sss_authtok_get_type(ts->authtoken)); > + assert_int_equal(len, sss_authtok_get_size(ts->authtoken)); > + assert_string_equal(data, sss_authtok_get_data(ts->authtoken)); > + > + ret = sss_authtok_get_ccfile(ts->authtoken, &pwd, &ret_len); > + > + assert_int_equal(ret, EOK); > + assert_string_equal(data, pwd); > + assert_int_equal(len - 1, ret_len); > +} > + > +/* Test when type has value SSS_AUTHTOK_TYPE_EMPTY */ > +static void test_sss_authtok_empty(void **state) > +{ > + errno_t ret; > + size_t ret_len; > + const char *pwd; > + struct test_state *ts; > + enum sss_authtok_type type; > + > + type = SSS_AUTHTOK_TYPE_EMPTY; > + ts = talloc_get_type_abort(*state, struct test_state); > + ret = sss_authtok_set(ts->authtoken, type, NULL, 0); > + > + assert_int_equal(ret, EOK); > + assert_int_equal(type, sss_authtok_get_type(ts->authtoken)); > + assert_int_equal(0, sss_authtok_get_size(ts->authtoken)); > + assert_null(sss_authtok_get_data(ts->authtoken)); > + > + ret = sss_authtok_get_password(ts->authtoken, &pwd, &ret_len); > + > + assert_int_equal(ret, ENOENT); > + > + ret = sss_authtok_get_ccfile(ts->authtoken, &pwd, &ret_len); > + > + assert_int_equal(ret, ENOENT); > + > + sss_authtok_set_empty(ts->authtoken); > + > + assert_int_equal(type, sss_authtok_get_type(ts->authtoken)); > + assert_int_equal(0, sss_authtok_get_size(ts->authtoken)); > + assert_null(sss_authtok_get_data(ts->authtoken)); > + > + ret = sss_authtok_set(ts->authtoken, type, '\0', 0); > + assert_int_equal(ret, EOK); > + > + assert_int_equal(type, sss_authtok_get_type(ts->authtoken)); > + assert_int_equal(EOK, sss_authtok_get_size(ts->authtoken)); > + assert_null(sss_authtok_get_data(ts->authtoken)); > + > + ret = sss_authtok_get_password(ts->authtoken, &pwd, &ret_len); > + > + assert_int_equal(ret, ENOENT); > + > + ret = sss_authtok_get_ccfile(ts->authtoken, &pwd, &ret_len); > + > + assert_int_equal(ret, ENOENT); > +} > + > +static void test_sss_authtok_wipe_password(void **state) > +{ > + size_t len; > + errno_t ret; > + const char *data; > + size_t ret_len; > + const char *pwd; > + struct test_state *ts; > + enum sss_authtok_type type; And also here. > + > + data = talloc_strdup(ts, "password"); > + assert_non_null(data); > + > + len = strlen(data) + 1; > + type = SSS_AUTHTOK_TYPE_PASSWORD; > + ts = talloc_get_type_abort(*state, struct test_state); > + ret = sss_authtok_set(ts->authtoken, type, (uint8_t *)data, len); > + > + assert_int_equal(ret, EOK); > + > + sss_authtok_wipe_password(ts->authtoken); > + > + ret = sss_authtok_get_password(ts->authtoken, &pwd, &ret_len); > + > + assert_int_equal(ret, EOK); > + assert_string_equal(pwd, ""); > + assert_int_equal(len - 1, ret_len); > +} > + _______________________________________________ sssd-devel mailing list sssd-devel@lists.fedorahosted.org https://lists.fedorahosted.org/mailman/listinfo/sssd-devel