Print this page
10104 pam_set_data() dereferences pointer before checking for NULL
        
*** 21,30 ****
--- 21,34 ----
  /*
   * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
   * Use is subject to license terms.
   */
  
+ /*
+  * Copyright (c) 2019, Joyent, Inc.
+  */
+ 
  #include <syslog.h>
  #include <dlfcn.h>
  #include <sys/types.h>
  #include <sys/stat.h>
  #include <stdlib.h>
*** 795,806 ****
  {
          struct pam_module_data *psd;
  
          pam_trace(PAM_DEBUG_DATA,
              "pam_set_data(%p:%s:%d)=%p", (void *)pamh,
!             module_data_name ? module_data_name : "NULL", pamh->pam_inmodule,
!             data);
          if (pamh == NULL || (pamh->pam_inmodule != WO_OK) ||
              module_data_name == NULL) {
                  return (PAM_SYSTEM_ERR);
          }
  
--- 799,810 ----
  {
          struct pam_module_data *psd;
  
          pam_trace(PAM_DEBUG_DATA,
              "pam_set_data(%p:%s:%d)=%p", (void *)pamh,
!             (module_data_name != NULL) ? module_data_name : "NULL",
!             (pamh != NULL) ? pamh->pam_inmodule : -1, data);
          if (pamh == NULL || (pamh->pam_inmodule != WO_OK) ||
              module_data_name == NULL) {
                  return (PAM_SYSTEM_ERR);
          }