<!--- Verify first that your issue is not already reported on GitHub -->
<!--- Also test if the latest release and devel branch are affected too -->
<!--- Complete *all* sections as described, this form is processed automatically -->

##### SUMMARY
<!--- Explain the problem briefly below -->
In Ansible 2.8.2, using the `user` module against an AIX host produces the following error:
~~~
The full traceback is:
Traceback (most recent call last):
  File "<stdin>", line 114, in <module>
  File "<stdin>", line 106, in _ansiballz_main
  File "<stdin>", line 49, in invoke_module
  File "/tmp/ansible_user_payload_IVarsv/__main__.py", line 2953, in <module>
  File "/tmp/ansible_user_payload_IVarsv/__main__.py", line 2892, in main
  File "/tmp/ansible_user_payload_IVarsv/__main__.py", line 1056, in modify_user
  File "/tmp/ansible_user_payload_IVarsv/__main__.py", line 2402, in modify_user_usermod
  File "/tmp/ansible_user_payload_IVarsv/__main__.py", line 886, in user_info
  File "/tmp/ansible_user_payload_IVarsv/__main__.py", line 910, in user_password
  File "/tmp/ansible_user_payload_IVarsv/__main__.py", line 2517, in parse_shadow_file
UnboundLocalError: local variable 'b_passwd' referenced before assignment
~~~

This may be a possible regression as Ansible 2.7 executes `user` successfully.

##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME
<!--- Write the short name of the module, plugin, task or feature below, use your best guess if unsure -->
`user`

##### ANSIBLE VERSION
<!--- Paste verbatim output from "ansible --version" between quotes -->
```paste below
ansible-playbook 2.8.2
  config file = /ansible/tower/projects/_214__mq_client_jar_deployment/ansible.cfg
  configured module search path = [u'/var/lib/awx/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/site-packages/ansible
  executable location = /usr/bin/ansible-playbook
  python version = 2.7.5 (default, May 31 2018, 09:41:32) [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)]
```

##### OS / ENVIRONMENT
<!--- Provide all relevant information below, e.g. target OS versions, network device firmware, etc. -->
IBM AIX

##### STEPS TO REPRODUCE
<!--- Describe exactly how to reproduce the problem, using a minimal test-case -->
1. Run the `user` module against a set of IBM AIX nodes using Ansible 2.7.
2. Upgrade Ansible to 2.8.2.
3. Run the `user` module against a set of IBM AIX nodes using Ansible 2.8.2.

<!--- Paste example playbooks or commands between quotes below -->
```yaml
  tasks:

    - name: Get sys user status
      user:
        name: sys
        group: sys
      check_mode: true
      register: user_out
```

<!--- HINT: You can paste gist.github.com links for larger files -->

##### EXPECTED RESULTS
<!--- Describe what you expected to happen when running the steps above -->
Ansible should have executed the `user` module per the preceding playbook task.

~~~
TASK [Get sys user status] *****************************************************
ok: [node1.is.local]
ok: [node2.is.local]
ok: [node3.is.local]
ok: [node4.is.local]
~~~

##### ACTUAL RESULTS
<!--- Describe what actually happened. If possible run with extra verbosity (-vvvv) -->
Instead, the Ansible task fails with the following stack trace: 

<!--- Paste verbatim command output between quotes -->
```paste below
The full traceback is:
Traceback (most recent call last):
  File "<stdin>", line 114, in <module>
  File "<stdin>", line 106, in _ansiballz_main
  File "<stdin>", line 49, in invoke_module
  File "/tmp/ansible_user_payload_IVarsv/__main__.py", line 2953, in <module>
  File "/tmp/ansible_user_payload_IVarsv/__main__.py", line 2892, in main
  File "/tmp/ansible_user_payload_IVarsv/__main__.py", line 1056, in modify_user
  File "/tmp/ansible_user_payload_IVarsv/__main__.py", line 2402, in modify_user_usermod
  File "/tmp/ansible_user_payload_IVarsv/__main__.py", line 886, in user_info
  File "/tmp/ansible_user_payload_IVarsv/__main__.py", line 910, in user_password
  File "/tmp/ansible_user_payload_IVarsv/__main__.py", line 2517, in parse_shadow_file
UnboundLocalError: local variable 'b_passwd' referenced before assignment
```

The stack trace goes back to `parse_shadow_file()`, which was introduced in the following commit: https://github.com/ansible/ansible/commit/f27eccabbd00f628f6e4195be7e1e4e5c463cba2#diff-8f60df5685f83b8659a1106d36591e93
- Currently supported on Illumos/Solaris.
        type: str
        version_added: "2.8"
notes:
  - There are specific requirements per platform on user management utilities. However
    they generally come pre-installed with the system and Ansible will require they
    are present at runtime. If they are not, a descriptive error message will be shown.
  - On SunOS platforms, the shadow file is backed up automatically since this module edits it directly.
    On other platforms, the shadow file is backed up by the underlying tools used by this module.
  - On macOS, this module uses C(dscl) to create, modify, and delete accounts. C(dseditgroup) is used to
    modify group membership. Accounts are hidden from the login window by modifying
    C(/Library/Preferences/com.apple.loginwindow.plist).
  - On FreeBSD, this module uses C(pw useradd) and C(chpass) to create, C(pw usermod) and C(chpass) to modify,
    C(pw userdel) remove, C(pw lock) to lock, and C(pw unlock) to unlock accounts.
  - On all other platforms, this module uses C(useradd) to create, C(usermod) to modify, and
    C(userdel) to remove accounts.
seealso:
- module: authorized_key
- module: group
- module: win_user
author:
- Stephen Fromm (@sfromm)
'''
EXAMPLES = r'''
- name: Add the user 'johnd' with a specific uid and a primary group of 'admin'
  user:
    name: johnd
    comment: John Doe
    uid: 1040
    group: admin