On (02/12/15 11:05), Pavel Březina wrote:
>On 12/01/2015 02:02 PM, Lukas Slebodnik wrote:
>>On (24/11/15 13:23), Pavel Březina wrote:
>>>Hi,
>>>I'm sending some sudo provider patches. I wanted to fix/improve things in the
>>>ldap sudo provider prior my work on ipa provider so I get familiar with it
>>>again and avoid making the same mistakes.
>>>
>>>It fixes tevent style, shuffles the code around a little bit, convert
>>>periodic task to use be_ptask module, renew hostinfo when needed, fix
>>>sdap_id_op logic, recude code duplication, remove dead code, simplify error
>>>handling, etc.
>>>
>>>Ticket fixed:
>>>https://fedorahosted.org/sssd/ticket/1943
>>>https://fedorahosted.org/sssd/ticket/2672
>>>
>>>I let Dan run downstream tests on those patches. We had to fix one test that
>>>was prone to a race condition which my patches revealed, but everything is
>>>green now.
>>>
>>
>>I got following valgrind errors with patches
>>
>>==17279== 1 errors in context 3 of 7:
>>==17279== Conditional jump or move depends on uninitialised value(s)
>>==17279==    at 0x8BC76FE: _talloc_steal_loc (talloc.c:1162)
>>==17279==    by 0x13DA3775: sdap_sudo_set_usn (sdap_async_sudo.c:318)
>>==17279==    by 0x13DA3775: sdap_sudo_refresh_done (sdap_async_sudo.c:750)
>>==17279==    by 0x89B4201: _tevent_req_error (tevent_req.c:167)
>>==17279==    by 0x13DA3321: sdap_sudo_load_sudoers_done 
>>(sdap_async_sudo.c:170)
>>==17279==    by 0x89B4201: _tevent_req_error (tevent_req.c:167)
>>==17279==    by 0x89B4201: _tevent_req_error (tevent_req.c:167)
>>==17279==    by 0x13D71ADB: generic_ext_search_handler.isra.3 
>>(sdap_async.c:1651)
>>==17279==    by 0x89B3923: tevent_common_loop_immediate 
>>(tevent_immediate.c:135)
>>==17279==    by 0x89B822D: epoll_event_loop_once (tevent_epoll.c:907)
>>==17279==    by 0x89B6936: std_event_loop_once (tevent_standard.c:114)
>>==17279==    by 0x89B30FC: _tevent_loop_once (tevent.c:533)
>>==17279==    by 0x89B329A: tevent_common_loop_wait (tevent.c:637)
>>==17279==
>>==17279==
>>==17279== 1 errors in context 4 of 7:
>>==17279== Conditional jump or move depends on uninitialised value(s)
>>==17279==    at 0x13DA3738: sdap_sudo_set_usn (sdap_async_sudo.c:307)
>>==17279==    by 0x13DA3738: sdap_sudo_refresh_done (sdap_async_sudo.c:750)
>>==17279==    by 0x89B4201: _tevent_req_error (tevent_req.c:167)
>>==17279==    by 0x13DA3321: sdap_sudo_load_sudoers_done 
>>(sdap_async_sudo.c:170)
>>==17279==    by 0x89B4201: _tevent_req_error (tevent_req.c:167)
>>==17279==    by 0x89B4201: _tevent_req_error (tevent_req.c:167)
>>==17279==    by 0x13D71ADB: generic_ext_search_handler.isra.3 
>>(sdap_async.c:1651)
>>==17279==    by 0x89B3923: tevent_common_loop_immediate 
>>(tevent_immediate.c:135)
>>==17279==    by 0x89B822D: epoll_event_loop_once (tevent_epoll.c:907)
>>==17279==    by 0x89B6936: std_event_loop_once (tevent_standard.c:114)
>>==17279==    by 0x89B30FC: _tevent_loop_once (tevent.c:533)
>>==17279==    by 0x89B329A: tevent_common_loop_wait (tevent.c:637)
>>==17279==    by 0x89B68D6: std_event_loop_wait (tevent_standard.c:140)
>
>I can't see a codepath where usn could be uninitialized, do you?
I didn't try but static analysers helped me,
at least I hope it will help you :-)
Maybe, once you will learn how to use them :-) :-) :-)


Error: UNINIT (CWE-457): [#def1]
sssd-1.13.90/src/providers/ldap/sdap_async_sudo.c:690: var_decl: Declaring 
variable "usn" without initializer.
sssd-1.13.90/src/providers/ldap/sdap_async_sudo.c:750: uninit_use_in_call: 
Using uninitialized value "usn" when calling "sdap_sudo_set_usn".
#  748|   
#  749|       /* remember new usn */
#  750|->     sdap_sudo_set_usn(state->srv_opts, usn);
#  751|   
#  752|       ret = EOK;

Error: CLANG_WARNING: [#def2]
sssd-1.13.90/src/providers/ldap/sdap_async_sudo.c:750:5: warning: Function call 
argument is an uninitialized value
#    sdap_sudo_set_usn(state->srv_opts, usn);
#    ^                                  ~~~
sssd-1.13.90/src/providers/ldap/sdap_async_sudo.c:690:5: note: 'usn' declared 
without an initial value
#    char *usn;
#    ^~~~~~~~~
sssd-1.13.90/src/providers/ldap/sdap_async_sudo.c:704:9: note: Assuming 
'dp_error' is not equal to 0
#    if (dp_error == DP_ERR_OK && ret != EOK) {
#        ^~~~~~~~~~~~~~~~~~~~~
sssd-1.13.90/src/providers/ldap/sdap_async_sudo.c:704:31: note: Left side of 
'&&' is false
#    if (dp_error == DP_ERR_OK && ret != EOK) {
#                              ^
sssd-1.13.90/src/providers/ldap/sdap_async_sudo.c:717:9: note: Assuming 'ret' 
is equal to 0
#    if (ret != EOK) {
#        ^~~~~~~~~~
sssd-1.13.90/src/providers/ldap/sdap_async_sudo.c:717:5: note: Taking false 
branch
#    if (ret != EOK) {
#    ^
sssd-1.13.90/src/providers/ldap/sdap_async_sudo.c:726:9: note: Assuming 'ret' 
is equal to 0
#    if (ret != EOK) {
#        ^~~~~~~~~~
sssd-1.13.90/src/providers/ldap/sdap_async_sudo.c:726:5: note: Taking false 
branch
#    if (ret != EOK) {
#    ^
sssd-1.13.90/src/providers/ldap/sdap_async_sudo.c:732:11: note: Calling 
'sdap_sudo_store_sudoers'
#    ret = sdap_sudo_store_sudoers(state, state->domain,
#          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sssd-1.13.90/src/providers/ldap/sdap_async_sudo.c:285:26: note: Left side of 
'||' is true
#    if (rules_count == 0 || rules == NULL) {
#                         ^
sssd-1.13.90/src/providers/ldap/sdap_async_sudo.c:732:11: note: Returning from 
'sdap_sudo_store_sudoers'
#    ret = sdap_sudo_store_sudoers(state, state->domain,
#          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sssd-1.13.90/src/providers/ldap/sdap_async_sudo.c:735:5: note: Taking false 
branch
#    if (ret != EOK) {
#    ^
sssd-1.13.90/src/providers/ldap/sdap_async_sudo.c:741:9: note: Assuming 'ret' 
is equal to 0
#    if (ret != EOK) {
#        ^~~~~~~~~~
sssd-1.13.90/src/providers/ldap/sdap_async_sudo.c:741:5: note: Taking false 
branch
#    if (ret != EOK) {
#    ^
sssd-1.13.90/src/providers/ldap/sdap_async_sudo.c:750:5: note: Function call 
argument is an uninitialized value
#    sdap_sudo_set_usn(state->srv_opts, usn);
#    ^                                  ~~~
#  748|   
#  749|       /* remember new usn */
#  750|->     sdap_sudo_set_usn(state->srv_opts, usn);
#  751|   
#  752|       ret = EOK;

Error: UNINIT (CWE-457): [#def3]
sssd-1.13.90/src/providers/ldap/sdap_sudo.c:130: var_decl: Declaring variable 
"deleted" without initializer.
sssd-1.13.90/src/providers/ldap/sdap_sudo.c:142: uninit_use: Using 
uninitialized value "deleted".
#  140|       case BE_REQ_SUDO_RULES:
#  141|           ret = sdap_sudo_rules_refresh_recv(req, &dp_error, &deleted);
#  142|->         if (ret == EOK && deleted == true) {
#  143|               ret = ENOENT;
#  144|           }

Error: UNINIT (CWE-457): [#def4]
sssd-1.13.90/src/providers/ldap/sdap_sudo.c:129: var_decl: Declaring variable 
"dp_error" without initializer.
sssd-1.13.90/src/providers/ldap/sdap_sudo.c:155: uninit_use_in_call: Using 
uninitialized value "dp_error" when calling "sdap_handler_done".
#  153|   
#  154|       talloc_zfree(req);
#  155|->     sdap_handler_done(be_req, dp_error, ret, strerror(ret));
#  156|   }
#  157|   

Error: UNINIT (CWE-457): [#def5]
sssd-1.13.90/src/providers/ldap/sdap_sudo_refresh.c:388: var_decl: Declaring 
variable "downloaded_rules_num" without initializer.
sssd-1.13.90/src/providers/ldap/sdap_sudo_refresh.c:401: uninit_use: Using 
uninitialized value "downloaded_rules_num".
#  399|       }
#  400|   
#  401|->     state->deleted = downloaded_rules_num != state->num_rules ? true 
: false;
#  402|   
#  403|   done:

LS
_______________________________________________
sssd-devel mailing list
sssd-devel@lists.fedorahosted.org
https://lists.fedorahosted.org/admin/lists/sssd-devel@lists.fedorahosted.org

Reply via email to