code: func (p *PAM) codeToError(returnValue C.int) error {
  	// Error strings are not allocated on the heap, so memory does not need
  	// released.
  	err := C._pam_strerror(pamHandle, p.pamh, returnValue)
  	if err != nil {
  		return trace.BadParameter(C.GoString(err))
  	}
  
  	return nil
  }
docs: // codeToError returns a human readable string from the PAM error.