#include <errno.h>
#include <unistd.h>
#include <sys/stat.h>
+#include <limits.h>
#include "security-server-common.h"
#include "security-server-comm.h"
}
retval = read(sockfd, &alen, sizeof(int));
- if(retval < sizeof(int) || alen < 0 || olen > MAX_MODE_STR_LEN)
+ if(retval < sizeof(int) || alen < 0 || alen > MAX_MODE_STR_LEN)
{
SEC_SVR_DBG("error reading access_rights len: %d", retval);
return SECURITY_SERVER_ERROR_RECV_FAILED;
return SECURITY_SERVER_ERROR_RECV_FAILED;
}
+ if(argv_len <= 0 || argv_len >= INT_MAX)
+ {
+ SEC_SVR_DBG("Error: argv length out of boundaries");
+ free_argv(argv, argc);
+ return SECURITY_SERVER_ERROR_RECV_FAILED;
+ }
+
argv[i] = malloc(argv_len + 1);
if(argv[i] == NULL)
{
int process_chk_pwd_request(int sockfd);
int process_set_pwd_max_challenge_request(int sockfd);
int process_set_pwd_validity_request(int sockfd);
-int init_try(void);
+void initiate_try(void);
#endif
ret = SECURITY_SERVER_ERROR_FILE_OPERATION;
goto error;
}
- close(fd);
ret = SECURITY_SERVER_SUCCESS;
error:
if(fd >= 0)
for(retval = 0 ; retval < SECURITY_SERVER_NUM_THREADS; retval++)
thread_status[retval] = 0;
-
initiate_try();
/* Create and bind a Unix domain socket */
struct timeval prev_try;
-int initiate_try()
+void initiate_try()
{
gettimeofday(&prev_try, NULL);
}
/* Receive size of pwd */
retval = read(sockfd, &new_pwd_len, sizeof(char));
- if(retval < sizeof(char) || new_pwd_len > SECURITY_SERVER_MAX_PASSWORD_LEN)
+ if(retval < sizeof(char) || new_pwd_len < 0 || new_pwd_len > SECURITY_SERVER_MAX_PASSWORD_LEN)
{
SEC_SVR_DBG("Server Error: new password length recieve failed: %d, %d", retval, new_pwd_len);
retval = send_generic_response(sockfd,