--- ./plugins/sudoers/auth/aix_auth.c_orig	2019-07-29 03:29:05 +0000
+++ ./plugins/sudoers/auth/aix_auth.c	2019-07-29 03:17:35 +0000
@@ -46,6 +46,7 @@
 
 #include "sudoers.h"
 #include "sudo_auth.h"
+#include <login.h>
 
 /*
  * For a description of the AIX authentication API, see
@@ -207,18 +208,40 @@
 int
 sudo_aix_verify(struct passwd *pw, char *prompt, sudo_auth *auth, struct sudo_conv_callback *callback)
 {
-    char *pass, *message = NULL;
-    int result = 1, reenter = 0;
+    char *pass, *message = NULL, *restrict_msg = NULL;;
+    int result = 1, reenter = 0, restrict_result = -1;
     int ret = AUTH_SUCCESS;
+    void *login_state = NULL;
     debug_decl(sudo_aix_verify, SUDOERS_DEBUG_AUTH)
 
+    /* Use newer APIs */
+    restrict_result = loginrestrictionsx(pw->pw_name, 0, NULL,
+                                &restrict_msg, &login_state);
+    if (restrict_result != 0)
+    {
+ 	if (restrict_msg != NULL)
+	{
+	    struct sudo_conv_message msg;	
+	    struct sudo_conv_reply repl;
+
+	    memset(&msg, 0, sizeof(msg));
+	    msg.msg_type = SUDO_CONV_ERROR_MSG;
+	    msg.msg = restrict_msg;
+	    memset(&repl, 0, sizeof(repl));
+	    sudo_conv(1, &msg, &repl, NULL);
+	    free(restrict_msg);
+	    restrict_msg = NULL;
+	}
+	debug_return_int(restrict_result);
+    }
+	
     do {
 	pass = auth_getpass(prompt, SUDO_CONV_PROMPT_ECHO_OFF, callback);
 	if (pass == NULL)
 	    break;
 	free(message);
 	message = NULL;
-	result = authenticate(pw->pw_name, pass, &reenter, &message);
+	result = authenticatex(pw->pw_name, pass, &reenter, &message, &login_state);
 	memset_s(pass, SUDO_CONV_REPL_MAX, 0, strlen(pass));
 	free(pass);
 	prompt = message;
@@ -243,7 +266,7 @@
 
     /* Check if password expired and allow user to change it if possible. */
     if (ret == AUTH_SUCCESS) {
-	result = passwdexpired(pw->pw_name, &message);
+	result = passwdexpiredx(pw->pw_name, &message, &login_state);
 	if (message != NULL && message[0] != '\0') {
 	    sudo_printf(result ? SUDO_CONV_ERROR_MSG : SUDO_CONV_INFO_MSG,
 		"%s", message);
