From 9078eac4afc8c6b260780559958c27f4600ff5e4 Mon Sep 17 00:00:00 2001 From: Muhammad-Furrukh Date: Sat, 8 Feb 2025 21:43:27 +0500 Subject: [PATCH] Added submission for IDL Programming Challenge --- submissions/Muhammad-Furrukh/PMP_check.c | 494 ++++++++++++++++++ submissions/Muhammad-Furrukh/PMP_check.exe | Bin 0 -> 145586 bytes submissions/Muhammad-Furrukh/README.md | 40 ++ .../Screenshot 2025-02-08 210705.png | Bin 0 -> 8100 bytes .../Muhammad-Furrukh/pmp_configuration.txt | 128 +++++ 5 files changed, 662 insertions(+) create mode 100644 submissions/Muhammad-Furrukh/PMP_check.c create mode 100644 submissions/Muhammad-Furrukh/PMP_check.exe create mode 100644 submissions/Muhammad-Furrukh/README.md create mode 100644 submissions/Muhammad-Furrukh/Screenshot 2025-02-08 210705.png create mode 100644 submissions/Muhammad-Furrukh/pmp_configuration.txt diff --git a/submissions/Muhammad-Furrukh/PMP_check.c b/submissions/Muhammad-Furrukh/PMP_check.c new file mode 100644 index 0000000..d5cb72a --- /dev/null +++ b/submissions/Muhammad-Furrukh/PMP_check.c @@ -0,0 +1,494 @@ +#include +#include +#include +#include +#include + +/************************ Functions ***********************************/ +void PMP_Check(char *filepath, char *address, char mode, char oper); +void cnfgn_bin_convert(char pmp_cnfgn[64][9]); +void mode_store(char pmp_cnfgn[64][9], int addr_mode[64]); +int MODE_check(char pmp_cnfgn[64][9], int pointer); +int addr_search(char pmp_addr[64][13], int addr_mode[64], char *addr); +int TOR_addr_check(char pmp_addr[64][13], char *addr, int pointer); +int NA4_addr_check(char pmp_addr_reg[13], char *addr); +int NAPOT_addr_check(char *pmp_addr_reg, char *addr); +void addr_bin_conv(char *pmp_addr_reg, char *bin_addr); +uint64_t NAPOT_offset(char bin_addr[35]); +uint64_t NAPOT_base(char bin_addr[35]); +int checkLock(char pmp_cnfgn[64][9]); +void Perm_check(char pmp_cnfgn[][9], char oper, int pointer); +/***********************************************************************/ + +char *bin[] = {"0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111", + "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111"}; + +int main(int argc, char *argv[]){ + // Checking any errors in number of arguments entered + if (argc != 5){ + printf("Error: Expected 4 arguments, but %d were entered\n", &argc - 1); + return 1; + } + + char *filepath = argv[1]; + char *addr = argv[2]; + char mode = argv[3][0]; + char oper = argv[4][0]; + + // Checking validity of input arguments + if (fopen(filepath, "r") == NULL){ + printf("Error: No such file exists.\n"); + return 1; + } + else if ((addr[0] != '0') || (addr[1] != 'x')){ + printf("Error: Leading \'0x\' missing in hexadecimal address\n"); + return 1; + } + else if ((mode != 'M') && (mode != 'S') && (mode != 'U')){ + printf("Error: Invalid mode \'%c\'.\n", mode); + return 1; + } + else if ((oper != 'R') && (oper != 'W') && (oper != 'X')){ + printf("Error: Invalid operation \'%c\'.\n", oper); + return 1; + } + + + PMP_Check(filepath, addr, mode, oper); + + return 0; +} + +void PMP_Check(char *filepath, char *address, char mode, char oper){ + /* Function implementing a Physical Memory Protection + Takes 4 arguments: + 1. filepath: A string containing the path to a PMP Configuration file + 2. address: Address of the memory location for which the permission is to be checked + 3. mode: Privilege mode, which maybe M, S or U + 4. oper: The operation that is to be performed, which includes R, W and X + The functions return type is void + The following assumptions are made regarding the configuration file: + - Config file contains 128 lines + - First 64 lines are the data of the corresponding 64 pmp configuration registers + - Next 64 lines are the data of the corresponding 64 pmp address registers + - There are no semi-colons at the end of each line and each line starts with 0x + - Data is in hexadecimal format*/ + + FILE *file = fopen(filepath, "r"); + + if (file == NULL){ + printf("Failed to open file.\n"); + } + + char pmpcnfgn[64][9]; + char pmpaddr[64][13]; + int i = 0; + + // Loads cofiguration register data in the 2D array pmpcnfgn + while ((i < 64) && fgets(pmpcnfgn[i], sizeof(pmpcnfgn[i]), file)){ + printf("pmpcnfgn_%d = %s", i, pmpcnfgn[i]); + i++; + } + + i = 0; + // Loads address register data in the 2D array pmpaddr + while ((i < 64) && fgets(pmpaddr[i], sizeof(pmpaddr[i]), file)){ + printf("pmpaddr_%d = %s", i, pmpaddr[i]); + i++; + } + printf("\n"); + + fclose(file); + + // Convert string of hexadecimal digits to binary string in pmpcnfgn registers + cnfgn_bin_convert(pmpcnfgn); + // Storing address modes of PMP entries in a separate array + int addr_mode[64]; + mode_store(pmpcnfgn, addr_mode); + // Searches for the relevant pmp address and config register number + int x = addr_search(pmpaddr, addr_mode, address); + // Checking permissions for the memory block + if ((x == 100) && ((mode == 'U') || (mode == 'S'))){ + printf("Access fault.\n"); + } + else if ((x == 100) && (mode = 'M')){ + if (checkLock(pmpcnfgn)){ + printf("Access fault.\n"); + } + else{ + printf("No access fault.\n"); + } + } + else if ((pmpcnfgn[x][0] == '0') && mode == 'M'){ + printf("No access fault.\n"); + } + else{ + Perm_check(pmpcnfgn, oper, x); + } + +} + +void cnfgn_bin_convert(char pmp_cnfgn[64][9]){ + /* Function defined specifically for PMP configuration registers + Converts the hexadecimal string in the set of pmp configuration registers and converts + them into binary strings + Takes a single argument: + pmp_cnfgn[64][9]: A 2D array containing the data of all the pmp configuration registers + The function's return type is void + Changes are made on default pmp configuration registers, not on a separate instance */ + int j, len, pos, i, val; + char *end_ptr; + char temp[9]; // temporary variable to store binary string + for (j = 0; j < 64; j++){ + // Inserting missing leading 0's + end_ptr = strchr(pmp_cnfgn[j], '\n'); // Points to the '\n' character + len = end_ptr - pmp_cnfgn[j] - 2; // Length of hex string, excluding "0x" and '\n' + pos = 0; + // Insering missing leading 0's in binary string + if (len < 2){ + strncpy(temp + pos, bin[0], 4); + pos += 4; + } + + i = 2; + while (pmp_cnfgn[j][i] != '\n'){ + // Conversion of hex character to a binary string of length 4 + if ((pmp_cnfgn[j][i] >= '0' ) && (pmp_cnfgn[j][i] <= '9')){ + val = pmp_cnfgn[j][i] - '0'; + strncpy(temp + pos, bin[val], 4); + } + else if ((pmp_cnfgn[j][i] >= 'A') && (pmp_cnfgn[j][i] <= 'F')){ + val = pmp_cnfgn[j][i] - 'A' + 10; + strncpy(temp + pos, bin[val], 4); + } + else{ + val = pmp_cnfgn[j][i] - 'a' + 10; + strncpy(temp + pos, bin[val], 4); + } + pos += 4; + i++; + } + temp[8] = '\0'; + // Binary string replaces the hex string in default pmp_cnfgn array + strcpy(pmp_cnfgn[j], temp); + } +} + +void mode_store(char pmp_cnfgn[64][9], int addr_mode[64]){ + /* Function stores address mode of each pmp entry in a separate 1D array for easy access + Takes two arguments: + 1. pmp_cnfgn[64][9]: A 2D array containg the data of pmp configuration registers in binary format + 2. addr_mode[64]: A 1D array to store the address mode of each pmp entry at the corresponding index + Return type is void*/ + int i; + for (i = 0; i < 64; i++){ + addr_mode[i] = MODE_check(pmp_cnfgn, i); + } +} + +int MODE_check(char pmp_cnfgn[64][9], int pointer){ + /* Function to check address mode of a given configuration register + Takes 2 arguments: + 1. pmp_cnfgn[64][9]: A 2D array containing the data of all the pmp configuration registers in + binary format + 2. pointer: register number for which the address mode is to be checked + Returns an int corresponding to address modes of the pmp configuration register + */ + if ((pmp_cnfgn[pointer][3] == '0') && (pmp_cnfgn[pointer][4] == '0')){ // OFF mode + return 0; + } + else if ((pmp_cnfgn[pointer][3] == '0') && (pmp_cnfgn[pointer][4] == '1')){ // TOR mode + return 1; + } + else if ((pmp_cnfgn[pointer][3] == '1') && (pmp_cnfgn[pointer][4] == '0')){ // NA4 mode + return 2; + } + else if ((pmp_cnfgn[pointer][3] == '1') && (pmp_cnfgn[pointer][4] == '1')){ // NAPOT mode + return 3; + } +} + +int addr_search(char pmp_addr[64][13], int addr_mode[64], char *addr){ + /* Function that searches for the correct pmp entry based on the given memory address + Takes 3 arguments: + 1. pmp_addr[64][13]: A 2D array that contains the data of all the pmp address registers in hex format + 2. addr_mode[64]: A 1D array that contains the address mode of the corresponding pmp entries + 3. addr: Hex string, which is the address of memory location to be looked for + Return type is an int, which is the pmp entry number corresponing the relevant memory block*/ + int i = 0; + int bool; + while (i < 64){ + if (addr_mode[i] == 0){ + // OFF mode, so PMP entry is disabled + } + else if (addr_mode[i] == 1){ + // TOR Mode + bool = TOR_addr_check(pmp_addr, addr, i); + } + else if (addr_mode[i] == 2){ + // NA4 Mode + bool = NA4_addr_check(pmp_addr[i], addr); + } + else{ + // NAPOT Mode + bool = NAPOT_addr_check(pmp_addr[i], addr); + } + if (bool == 1){ // If addr lies in the memory block protected by the ith pmp entry, than entry number is returned + return i; + } + i++; + } + return 100; // No relevant entry found +} + +int TOR_addr_check(char pmp_addr[64][13], char *addr, int pointer){ + /* This function checks if the searched address lies in the memory block protected by the given + pmp entry, when PMP entry is in TOR mode + Takes 3 arguments: + 1. pmp_addr[64][13]: A 2D array containing the data of all 64 pmp address registers in hex format + 2. addr: A hexadecimal string for the address of the memory location that is being searched for + 3. pointer: pmp entry which needs to be checked + Returns an int which verifies whether the searched address is protected by the given pmp entry + A return value of 1 implies, yes it is protected by the given entry + Otherwise, it returns 0*/ + + char *temp1 = pmp_addr[pointer]; // Stores address data of current pmp entry + if (pointer != 0){ + char *temp2 = pmp_addr[pointer-1]; // Stores address of previous pmp entry if current entry number is not 0 + while (*temp2){ // Repaces any '\n' or '\r' character with '\0' + if ((*temp2 == '\n') || (*temp2 == '\r')){ + *temp2 = '\0'; + } + temp2++; + } + } + while (*temp1){ // Repaces any '\n' or '\r' character with '\0' + if ((*temp1 == '\n') || (*temp1 == '\r')){ + *temp1 = '\0'; + } + temp1++; + } + + uint64_t pointer1_dec = strtoull(pmp_addr[pointer], NULL, 16); // Converts hex string to a 64-bit int + uint64_t pointer2_dec; + + if (pointer != 0){ + pointer2_dec = strtoull(pmp_addr[pointer-1], NULL, 16); // Converts hex string to a 64-bit int if current pmp entry number is not 0 + } + else{ + pointer2_dec = 0; + } + + uint64_t input_dec = strtoull(addr, NULL, 16); + + if ((input_dec >= pointer2_dec) && (input_dec < pointer1_dec)){ + return 1; + } + else{ + return 0; + } +} + +int NA4_addr_check(char pmp_addr_reg[13], char *addr){ + /* This function checks if the searched address lies in the memory block protected by the given + pmp entry, when PMP entry is in NA4 mode + Takes 2 arguments: + 1. pmp_addr_reg[13]: A 1D array containing the data of the given pmp address register in hex format + 2. addr: A hexadecimal string for the address of the memory location that is being searched for + Returns an int which verifies whether the searched address is protected by the given pmp entry + A return value of 1 implies, yes it is protected by the given entry + Otherwise, it returns 0*/ + char *temp = pmp_addr_reg; // Stores address data of current pmp entry + while (*temp){ // Repaces any '\n' or '\r' character with '\0' + if ((*temp == '\n') || (*temp == '\r')){ + *temp = '\0'; + } + temp++; + } + uint64_t pointer_dec = strtoull(pmp_addr_reg, NULL, 16); // Converts hex string to a 64-bit int + uint64_t input_dec = strtoull(addr, NULL, 16); // Converts hex string to a 64-bit int + + if ((input_dec >= pointer_dec) && (input_dec < pointer_dec + 3)){ + return 1; + } + else{ + return 0; + } +} + +int NAPOT_addr_check(char *pmp_addr_reg, char *addr){ + /* This function checks if the searched address lies in the memory block protected by the given + pmp entry, when PMP entry is in NAPOT mode + Takes 2 arguments: + 1. pmp_addr_reg[13]: A 1D array containing the data of the given pmp address register in hex format + 2. addr: A hexadecimal string for the address of the memory location that is being searched for + Returns an int which verifies whether the searched address is protected by the given pmp entry + A return value of 1 implies, yes it is protected by the given entry + Otherwise, it returns 0*/ + char bin_pmp_addr[35]; // Array to store address data of given pmp entry in binary format + addr_bin_conv(pmp_addr_reg, bin_pmp_addr); // Converts hex address to binary format + uint64_t offset = NAPOT_offset(bin_pmp_addr); // Finding encoded offset for the given pmp entry in NAPOT mode + uint64_t base = NAPOT_base(bin_pmp_addr); // Finding encoded base address for the given pmp entry in NAPOT mode + + uint64_t search_addr = strtoull(addr, NULL, 16); // Converts hex string to a 64 bit int + if ((search_addr >= base) && (search_addr < base + offset)){ + return 1; + } + else{ + return 0; + } +} + +void addr_bin_conv(char *pmp_addr_reg, char *bin_addr){ + /* This function converts a address data of at max 9 hex digits to a string of 34 binary digits + It takes two arguments: + 1. pmp_addr_reg: String containing address data of a given pmp entry in hex format + 2. Empty string, which will store the binary form of address data + Return type of the function is void*/ + int val; + int i = 2; + int pos = 0; + + // Inserting 2 MSB bits + char *end_ptr = strchr(pmp_addr_reg, '\n'); // Index at which '\n' character is present + int len = end_ptr - pmp_addr_reg - 2; // Length of hex string excluding "0x" and '\n' + // Case where 9th hex character is missing. Implying it is 0 + if (len < 9){ + strncpy(bin_addr + pos, "00", 2); + pos += 2; + } + // Case where 9th hex character is present. It will be a 2 bit character, since maximum bits are 34 + else if (len == 9){ + val = pmp_addr_reg[i] - '0'; + if (val == 0){ + strncpy(bin_addr + pos, "00", 2); + } + else if (val == 1){ + strncpy(bin_addr + pos, "01", 2); + } + else if (val == 2){ + strncpy(bin_addr + pos, "10", 2); + } + else if (val == 3){ + strncpy(bin_addr + pos, "11", 2); + } + pos += 2; + } + // Rest of the hex characters are of 4 bits, so if they are missing, this implies that they are 0 + for (int j = 0; j < 9 - len - 1; j++){ + strncpy(bin_addr + pos, bin[0], 4); + pos += 4; + } + + // Converting the available hex characters to binary + while (pmp_addr_reg[i] != '\n'){ + if ((pmp_addr_reg[i] >= '0' ) && (pmp_addr_reg[i] <= '9')){ + val = pmp_addr_reg[i] - '0'; + strncpy(bin_addr + pos, bin[val], 4); + } + else if ((pmp_addr_reg[i] >= 'A') && (pmp_addr_reg[i] <= 'F')){ + val = pmp_addr_reg[i] - 'A' + 10; + strncpy(bin_addr + pos, bin[val], 4); + } + else{ + val = pmp_addr_reg[i] - 'a' + 10; + strncpy(bin_addr + pos, bin[val], 4); + } + pos += 4; + i++; + } + bin_addr[34] = '\0'; +} + +uint64_t NAPOT_offset(char bin_addr[35]){ + /* This function decodes the offset from pmp address register in NAPOT mode + It takes a single argument: + bin_addr[35]: A 1D array of characters, containing address for a given pmp entry in hex format*/ + int i = 31; + int power = 2; + while (i > 1){ + power++; + if (bin_addr[i] == '0'){ + + break; + } + i--; + } + uint64_t offset = 1; + for (int j = 0; j < power; j++){ + offset *= 2; + } + return offset; +} + +uint64_t NAPOT_base(char bin_addr[35]){ + /* This function decodes the base address from pmp address register in NAPOT mode + It takes a single argument: + bin_addr[35]: A 1D array of characters, containing address for a given pmp entry in hex format*/ + int i = 31; + while (i > 1){ + if (bin_addr[i] == '0'){ + break; + } + else{ + bin_addr[i] = '0'; + } + i--; + } + + uint64_t base = strtoull(bin_addr, NULL, 2); + return base; +} + +int checkLock(char pmp_cnfgn[64][9]){ + /* This function checks if Lock bit is enabled in any pmp configuration register + It takes a single argument: + pmp_cnfgn[64][9]: A 2D array containing the data of all the pmp configuration registers in binary format + Returns a 1 if any pmp config register has Lock bit enabled + Otherwise it returns a 0*/ + for (int i = 0; i < 64; i++){ + if (pmp_cnfgn[i][0] == '1'){ + return 1; + } + } + return 0; +} + + +void Perm_check(char pmp_cnfgn[][9], char oper, int pointer){ + /* Function to check relevant permissions of a given configuration register + Takes 3 arguments: + 1. pmp_cnfgn[][9]: A 2D array containing the data of all the pmp configuration registers + 2. oper: R, W, X operation that is to be performed for relevant memory block + 3. pointer: Relevant configuration register number + Return type is void + Function prints whether there is an access fault or not*/ + + switch (oper) + { + case 'R': + if (pmp_cnfgn[pointer][7] == '1'){ + printf("No access fault.\n"); + } + else{ + printf("Access fault. \n"); + } + break; + case 'W': + if (pmp_cnfgn[pointer][6] == '1'){ + printf("No access fault.\n"); + } + else{ + printf("Access fault. \n"); + } + break; + case 'X': + if (pmp_cnfgn[pointer][5] == '1'){ + printf("No access fault.\n"); + } + else{ + printf("Access fault. \n"); + } + break; + } +} \ No newline at end of file diff --git a/submissions/Muhammad-Furrukh/PMP_check.exe b/submissions/Muhammad-Furrukh/PMP_check.exe new file mode 100644 index 0000000000000000000000000000000000000000..66194cb8892ea522a3c3fd7c33674af40fc07cfa GIT binary patch literal 145586 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 Nm4do_xvXjM{{fH?8C(DW literal 0 HcmV?d00001 diff --git a/submissions/Muhammad-Furrukh/pmp_configuration.txt b/submissions/Muhammad-Furrukh/pmp_configuration.txt new file mode 100644 index 0000000..4e98e77 --- /dev/null +++ b/submissions/Muhammad-Furrukh/pmp_configuration.txt @@ -0,0 +1,128 @@ +0x98 +0x9F +0x93 +0x00 +0x9C +0x97 +0x91 +0x00 +0x9A +0x9F +0x93 +0x00 +0x98 +0x9F +0x93 +0x00 +0x9C +0x97 +0x91 +0x00 +0x9A +0x9F +0x93 +0x00 +0x98 +0x9F +0x93 +0x00 +0x9C +0x97 +0x91 +0x00 +0x9A +0x9F +0x93 +0x00 +0x98 +0x9F +0x93 +0x00 +0x9C +0x97 +0x91 +0x00 +0x9A +0x9F +0x93 +0x00 +0x98 +0x9F +0x93 +0x00 +0x9C +0x97 +0x91 +0x00 +0x9A +0x9F +0x93 +0x00 +0x98 +0x9F +0x93 +0x00 +0x20000 +0x40000 +0x60000 +0x80000 +0xA0000 +0xC0000 +0xE0000 +0x100000 +0x120000 +0x140000 +0x160000 +0x180000 +0x1A0000 +0x1C0000 +0x1E0000 +0x200000 +0x220000 +0x240000 +0x260000 +0x280000 +0x2A0000 +0x2C0000 +0x2E0000 +0x300000 +0x320000 +0x340000 +0x360000 +0x380000 +0x3A0000 +0x3C0000 +0x3E0000 +0x400000 +0x420000 +0x440000 +0x460000 +0x480000 +0x4A0000 +0x4C0000 +0x4E0000 +0x500000 +0x520000 +0x540000 +0x560000 +0x580000 +0x5A0000 +0x5C0000 +0x5E0000 +0x600000 +0x620000 +0x640000 +0x660000 +0x680000 +0x6A0000 +0x6C0000 +0x6E0000 +0x700000 +0x720000 +0x740000 +0x760000 +0x780000 +0x7A0000 +0x7C0000 +0x7E0000 +0x800000