summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHarpreet "Eli" Sangha <eliptus@google.com>2019-07-29 17:34:13 +0900
committerHarpreet "Eli" Sangha <eliptus@google.com>2019-07-30 11:13:06 +0900
commit13f68731a3778d2ec7abd4b2075d8f452ef87adf (patch)
tree7a0a8c3c9a791f0dc870eb6c594f7b3b0a3b09dd
parent04e1a3b89c79aaec2cbaa63fcdb6fa8efcf338c7 (diff)
downloadfts_touch_s5-13f68731a3778d2ec7abd4b2075d8f452ef87adf.tar.gz
Fixup array1dTo2d and print utilities.
- The mananer in which handled nonzero rows and zero columns were incompatible, resulting field crash. - There was no handling of malloc failures. Bug: 138535981 Test: Run Dumpstate commands. Change-Id: Iaf3fbf9377ab9da519f759015b4493f0e35e6836 Signed-off-by: Harpreet "Eli" Sangha <eliptus@google.com>
-rw-r--r--fts_lib/ftsTool.c141
1 files changed, 91 insertions, 50 deletions
diff --git a/fts_lib/ftsTool.c b/fts_lib/ftsTool.c
index de51a8f..6a3f7c5 100644
--- a/fts_lib/ftsTool.c
+++ b/fts_lib/ftsTool.c
@@ -355,22 +355,22 @@ short **array1dTo2d_short(short *data, int size, int columns)
int i;
short **matrix = NULL;
- if (size == 0) {
- matrix = (short **)kmalloc_array(1,
- sizeof(short *), GFP_KERNEL);
- matrix[0] = (short *)kmalloc_array(0,
- sizeof(short), GFP_KERNEL);
- } else {
+ if (size != 0)
matrix = (short **)kmalloc_array(((int)(size / columns)),
sizeof(short *), GFP_KERNEL);
- if (matrix != NULL) {
- for (i = 0; i < (int)(size / columns); i++)
- matrix[i] = (short *)kmalloc_array(columns,
- sizeof(short), GFP_KERNEL);
+ if (matrix != NULL) {
+ for (i = 0; i < (int)(size / columns); i++) {
+ matrix[i] = (short *)kmalloc_array(columns,
+ sizeof(short), GFP_KERNEL);
+ if (!matrix[i])
+ break;
+ }
- for (i = 0; i < size; i++)
- matrix[i / columns][i % columns] = data[i];
+ for (i = 0; i < size; i++) {
+ if (!matrix[i / columns])
+ break;
+ matrix[i / columns][i % columns] = data[i];
}
}
@@ -391,20 +391,22 @@ u16 **array1dTo2d_u16(u16 *data, int size, int columns)
int i;
u16 **matrix = NULL;
- if (size == 0) {
- matrix = (u16 **)kmalloc_array(1, sizeof(u16 *), GFP_KERNEL);
- matrix[0] = (u16 *)kmalloc_array(0, sizeof(u16), GFP_KERNEL);
- } else {
+ if (size != 0)
matrix = (u16 **)kmalloc_array(((int)(size / columns)),
sizeof(u16 *), GFP_KERNEL);
- if (matrix != NULL) {
- for (i = 0; i < (int)(size / columns); i++)
- matrix[i] = (u16 *)kmalloc_array(columns,
- sizeof(u16), GFP_KERNEL);
+ if (matrix != NULL) {
+ for (i = 0; i < (int)(size / columns); i++) {
+ matrix[i] = (u16 *)kmalloc_array(columns,
+ sizeof(u16), GFP_KERNEL);
+ if (!matrix[i])
+ break;
+ }
- for (i = 0; i < size; i++)
- matrix[i / columns][i % columns] = data[i];
+ for (i = 0; i < size; i++) {
+ if (!matrix[i / columns])
+ break;
+ matrix[i / columns][i % columns] = data[i];
}
}
@@ -425,22 +427,23 @@ u8 **array1dTo2d_u8(u8 *data, int size, int columns)
int i;
u8 **matrix = NULL;
- if (size == 0) {
- matrix = (u8 **)kmalloc_array(1, sizeof(u8 *), GFP_KERNEL);
-
- matrix[0] = (u8 *)kmalloc_array(0, sizeof(u8), GFP_KERNEL);
- } else {
-
+ if (size != 0) {
matrix = (u8 **)kmalloc_array(((int)(size / columns)),
sizeof(u8 *), GFP_KERNEL);
+ }
- if (matrix != NULL) {
- for (i = 0; i < (int)(size / columns); i++)
- matrix[i] = (u8 *)kmalloc_array(columns,
- sizeof(u8), GFP_KERNEL);
+ if (matrix != NULL) {
+ for (i = 0; i < (int)(size / columns); i++) {
+ matrix[i] = (u8 *)kmalloc_array(columns,
+ sizeof(u8), GFP_KERNEL);
+ if (!matrix[i])
+ break;
+ }
- for (i = 0; i < size; i++)
- matrix[i / columns][i % columns] = data[i];
+ for (i = 0; i < size; i++) {
+ if (!matrix[i / columns])
+ break;
+ matrix[i / columns][i % columns] = data[i];
}
}
@@ -461,20 +464,22 @@ i8 **array1dTo2d_i8(i8 *data, int size, int columns)
int i;
i8 **matrix = NULL;
- if (size == 0) {
- matrix = (i8 **)kmalloc_array(1, sizeof(i8 *), GFP_KERNEL);
- matrix[0] = (i8 *)kmalloc_array(0, sizeof(i8), GFP_KERNEL);
- } else {
+ if (size != 0)
matrix = (i8 **)kmalloc_array(((int)(size / columns)),
sizeof(i8 *), GFP_KERNEL);
- if (matrix != NULL) {
- for (i = 0; i < (int)(size / columns); i++)
- matrix[i] = (i8 *)kmalloc_array(columns,
- sizeof(i8), GFP_KERNEL);
+ if (matrix != NULL) {
+ for (i = 0; i < (int)(size / columns); i++) {
+ matrix[i] = (i8 *)kmalloc_array(columns,
+ sizeof(i8), GFP_KERNEL);
+ if (!matrix[i])
+ break;
+ }
- for (i = 0; i < size; i++)
- matrix[i / columns][i % columns] = data[i];
+ for (i = 0; i < size; i++) {
+ if (!matrix[i / columns])
+ break;
+ matrix[i / columns][i % columns] = data[i];
}
}
@@ -495,6 +500,11 @@ void print_frame_short(char *label, short **matrix, int row, int column)
int buff_len, index;
char *buff;
+ pr_info("%s\n", label);
+
+ if (matrix == NULL)
+ return;
+
buff_len = (6 + 1) * column + 1; /* -32768 str len: 6 */
buff = kzalloc(buff_len, GFP_KERNEL);
if (buff == NULL) {
@@ -502,8 +512,9 @@ void print_frame_short(char *label, short **matrix, int row, int column)
return;
}
- pr_info("%s\n", label);
for (i = 0; i < row; i++) {
+ if (!matrix[i])
+ break;
index = 0;
for (j = 0; j < column; j++)
index += scnprintf(buff + index, buff_len - index,
@@ -529,6 +540,11 @@ void print_frame_u16(char *label, u16 **matrix, int row, int column)
int buff_len, index;
char *buff;
+ pr_info("%s\n", label);
+
+ if (matrix == NULL)
+ return;
+
buff_len = (5 + 1) * column + 1; /* 65535 str len: 5 */
buff = kzalloc(buff_len, GFP_KERNEL);
if (buff == NULL) {
@@ -536,8 +552,9 @@ void print_frame_u16(char *label, u16 **matrix, int row, int column)
return;
}
- pr_info("%s\n", label);
for (i = 0; i < row; i++) {
+ if (!matrix[i])
+ break;
index = 0;
for (j = 0; j < column; j++)
index += scnprintf(buff + index, buff_len - index,
@@ -563,6 +580,11 @@ void print_frame_u8(char *label, u8 **matrix, int row, int column)
int buff_len, index;
char *buff;
+ pr_info("%s\n", label);
+
+ if (matrix == NULL)
+ return;
+
buff_len = (3 + 1) * column + 1; /* 255 str len: 3 */
buff = kzalloc(buff_len, GFP_KERNEL);
if (buff == NULL) {
@@ -570,8 +592,9 @@ void print_frame_u8(char *label, u8 **matrix, int row, int column)
return;
}
- pr_info("%s\n", label);
for (i = 0; i < row; i++) {
+ if (!matrix[i])
+ break;
index = 0;
for (j = 0; j < column; j++)
index += scnprintf(buff + index, buff_len - index,
@@ -597,6 +620,11 @@ void print_frame_i8(char *label, i8 **matrix, int row, int column)
int buff_len, index;
char *buff;
+ pr_info("%s\n", label);
+
+ if (matrix == NULL)
+ return;
+
buff_len = (4 + 1) * column + 1; /* -128 str len: 4 */
buff = kzalloc(buff_len, GFP_KERNEL);
if (buff == NULL) {
@@ -604,8 +632,9 @@ void print_frame_i8(char *label, i8 **matrix, int row, int column)
return;
}
- pr_info("%s\n", label);
for (i = 0; i < row; i++) {
+ if (!matrix[i])
+ break;
index = 0;
for (j = 0; j < column; j++)
index += scnprintf(buff + index, buff_len - index,
@@ -631,6 +660,11 @@ void print_frame_u32(char *label, u32 **matrix, int row, int column)
int buff_len, index;
char *buff;
+ pr_info("%s\n", label);
+
+ if (matrix == NULL)
+ return;
+
buff_len = (10 + 1) * column + 1; /* 4294967295 str len: 10 */
buff = kzalloc(buff_len, GFP_KERNEL);
if (buff == NULL) {
@@ -638,8 +672,9 @@ void print_frame_u32(char *label, u32 **matrix, int row, int column)
return;
}
- pr_info("%s\n", label);
for (i = 0; i < row; i++) {
+ if (!matrix[i])
+ break;
index = 0;
for (j = 0; j < column; j++)
index += scnprintf(buff + index, buff_len - index,
@@ -665,6 +700,11 @@ void print_frame_int(char *label, int **matrix, int row, int column)
int buff_len, index;
char *buff;
+ pr_info("%s\n", label);
+
+ if (matrix == NULL)
+ return;
+
buff_len = (11 + 1) * column + 1; /* -2147483648 str len: 11 */
buff = kzalloc(buff_len, GFP_KERNEL);
if (buff == NULL) {
@@ -672,8 +712,9 @@ void print_frame_int(char *label, int **matrix, int row, int column)
return;
}
- pr_info("%s\n", label);
for (i = 0; i < row; i++) {
+ if (!matrix[i])
+ break;
index = 0;
for (j = 0; j < column; j++)
index += scnprintf(buff + index, buff_len - index,