3 int find_trusted_paired_device(FILE *log_fp,
char **trusted_devices,
int num_of_devices,
char **paired_devices,
int num_of_paired,
char **detected_dev) {
4 if (!trusted_devices || !paired_devices) {
7 int trusted_dev_found = 0;
9 for (
int i = 0; i < num_of_paired; i++) {
10 if (
is_dev_trusted(log_fp, paired_devices[i], trusted_devices, num_of_devices)) {
12 fprintf(log_fp,
"Trusted Device: %s\n", paired_devices[i]);
14 if ((*detected_dev = malloc(
sizeof(
char) * (
BT_MAC_LEN + 1)))) {
15 strncpy(*detected_dev, paired_devices[i],
BT_MAC_LEN);
18 trusted_dev_found = 1;
23 return trusted_dev_found;
31 FILE *trusted_dev_fp = NULL;
33 const unsigned int buf_size = PATH_MAX + LOGIN_NAME_MAX;
34 char file_name[buf_size];
35 unsigned int copy_len = 0;
37 strcpy(file_name,
"");
41 copy_len = copy_len > (PATH_MAX -1) ? (PATH_MAX - 1): copy_len;
46 assert(strlen(file_name) < buf_size);
48 if (strlen(username) > 0) {
49 copy_len = strlen(username);
50 copy_len = (copy_len > LOGIN_NAME_MAX) ? LOGIN_NAME_MAX : copy_len;
51 strncat(file_name, username, copy_len);
55 assert(strlen(file_name) < buf_size);
59 file_name[buf_size-1] =
'\0';
62 file_name[len] =
'\0';
69 if (!(trusted_dev_fp = fopen(file_name,
"r"))) {
70 perror(
"There are no trusted device");
72 fprintf(log_fp,
"File: %s does not exist. There are no trusted device for the user: %s\n", file_name, username);
75 fprintf(stderr,
"File: %s does not exist. There are no trusted device for the user: %s\n", file_name, username);
78 return trusted_dev_fp;
89 if (trusted_dev_fp && trusted_devices && num_trusted_devices > 0) {
90 fseek(trusted_dev_fp, 0, SEEK_SET);
91 while ((read = getline(&line, &len, trusted_dev_fp)) != -1 && i < num_trusted_devices) {
92 if (strcmp(line,
"\n") != 0) {
93 dev = trusted_devices + i;
95 if ((*dev = malloc(
sizeof(
char) * (
BT_MAC_LEN + 1)))) {
110 char **trusted_devices = NULL;
111 FILE *trusted_dev_fp = NULL;
112 int num_of_devices_lc = 0;
115 goto find_trusted_devices_terminate;
120 goto find_trusted_devices_terminate;
125 goto find_trusted_devices_terminate;
129 goto find_trusted_devices_terminate;
132 if (!(trusted_devices = malloc(
sizeof(
char *) * num_of_devices_lc))) {
134 goto find_trusted_devices_terminate;
139 find_trusted_devices_terminate:
140 if (trusted_dev_fp) {
141 fclose(trusted_dev_fp);
144 *num_of_devices = num_of_devices_lc;
145 return trusted_devices;
149 int bluetooth_status = 0;
152 int num_of_devices = 0;
153 int num_of_paired = 0;
155 char **trusted_devices = NULL;
157 *detected_dev = NULL;
160 goto bluetooth_login_terminate;
168 fprintf(log_fp,
"%s: Call find device\n", curr_time);
171 if (paired_devices && (bluetooth_status =
find_trusted_paired_device(log_fp, trusted_devices, num_of_devices, paired_devices, num_of_paired, detected_dev))) {
172 if (log_fp && *detected_dev) {
173 fprintf(log_fp,
"%s: Device %s found\n", curr_time, *detected_dev);
178 fprintf(log_fp,
"%s: No trusted devices was found %d\n", curr_time, bluetooth_status);
182 bluetooth_login_terminate:
183 if (trusted_devices) {
187 if (paired_devices) {
191 return bluetooth_status;
void free_device_list(char **device_list, int num_of_devices)
const char * trusted_dir_path
int is_dev_trusted(FILE *log_fp, char *dev, char **trusted_devices, int num_of_devices)
char ** get_paired_devices(int *num_of_paired)
int bluetooth_login(FILE *log_fp, const char *trusted_dir_path, const char *username, char **detected_dev)
char ** find_trusted_devices(FILE *log_fp, const char *trusted_dir_path, const char *username, int *num_of_devices)
FILE * get_trusted_dev_file(const char *trusted_dir_path, const char *username, FILE *log_fp)
int find_trusted_paired_device(FILE *log_fp, char **trusted_devices, int num_of_devices, char **paired_devices, int num_of_paired, char **detected_dev)
void set_trusted_devices(FILE *trusted_dev_fp, char **trusted_devices, int num_trusted_devices)
int get_num_lines(FILE *fp)
void get_login_time(char *curr_time)
int check_config(FILE *log_fp, const char *const file, const int is_dir)
: Where security checks and security tools are placed