summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAkash Aggarwal <quic_akasagga@quicinc.com>2022-09-28 18:29:58 +0530
committerAleksander Morgado <aleksander@aleksander.es>2022-10-17 11:49:38 +0000
commitff7c0c9b84c0b8e32760b5b6e9e978048666d505 (patch)
treed56e9b0fee3aab1ed9b2f023dd2e3c03bb0b04d6
parenta399494a2b9e17c624bf175430847aedd4d03d59 (diff)
downloadlibqmi-ff7c0c9b84c0b8e32760b5b6e9e978048666d505.tar.gz
libqmi-glib: avoid hiding "value" field, if it not contains personal info
Hide the value field exclusively for those TLVs that are marked as or contain personal info.
-rw-r--r--build-aux/qmi-codegen/Message.py15
-rw-r--r--build-aux/qmi-codegen/Variable.py5
-rw-r--r--build-aux/qmi-codegen/VariableArray.py3
-rw-r--r--build-aux/qmi-codegen/VariableSequence.py7
-rw-r--r--build-aux/qmi-codegen/VariableStruct.py7
-rw-r--r--src/libqmi-glib/qmi-message.c6
6 files changed, 35 insertions, 8 deletions
diff --git a/build-aux/qmi-codegen/Message.py b/build-aux/qmi-codegen/Message.py
index c60e4593..8d1b7cc1 100644
--- a/build-aux/qmi-codegen/Message.py
+++ b/build-aux/qmi-codegen/Message.py
@@ -286,6 +286,7 @@ class Message:
'{\n'
' const gchar *tlv_type_str = NULL;\n'
' g_autofree gchar *translated_value = NULL;\n'
+ ' gboolean value_has_personal_info = FALSE;\n'
'\n')
if self.type == 'Message':
@@ -303,7 +304,11 @@ class Message:
' tlv_type_str = "${field_name}";\n'
' translated_value = ${underscore_field}_get_printable (\n'
' ctx->self,\n'
- ' ctx->line_prefix);\n'
+ ' ctx->line_prefix);\n')
+ if field.variable is not None and field.variable.contains_personal_info:
+ field_template += (
+ ' value_has_personal_info = TRUE;\n')
+ field_template += (
' break;\n')
template += string.Template(field_template).substitute(translations)
@@ -326,7 +331,11 @@ class Message:
' tlv_type_str = "${field_name}";\n'
' translated_value = ${underscore_field}_get_printable (\n'
' ctx->self,\n'
- ' ctx->line_prefix);\n'
+ ' ctx->line_prefix);\n')
+ if field.variable is not None and field.variable.contains_personal_info:
+ field_template += (
+ ' value_has_personal_info = TRUE;\n')
+ field_template += (
' break;\n')
template += string.Template(field_template).substitute(translations)
@@ -348,7 +357,7 @@ class Message:
' } else {\n'
' g_autofree gchar *value_hex = NULL;\n'
'\n'
- ' if (qmi_utils_get_show_personal_info ())\n'
+ ' if (qmi_utils_get_show_personal_info () || !value_has_personal_info)\n'
' value_hex = qmi_helpers_str_hex (value, length, \':\');\n'
' else\n'
' value_hex = g_strdup ("###...");\n'
diff --git a/build-aux/qmi-codegen/Variable.py b/build-aux/qmi-codegen/Variable.py
index 65bca8d3..dc28f219 100644
--- a/build-aux/qmi-codegen/Variable.py
+++ b/build-aux/qmi-codegen/Variable.py
@@ -117,6 +117,11 @@ class Variable:
else:
self.personal_info = False;
+ """
+ Whether the variable contains personal info or not
+ """
+ self.contains_personal_info = self.personal_info
+
"""
Emits the code to declare specific new types required by the variable.
"""
diff --git a/build-aux/qmi-codegen/VariableArray.py b/build-aux/qmi-codegen/VariableArray.py
index 074f4710..17f5bc74 100644
--- a/build-aux/qmi-codegen/VariableArray.py
+++ b/build-aux/qmi-codegen/VariableArray.py
@@ -93,6 +93,9 @@ class VariableArray(Variable):
# Arrays need compat GIR support if the array element needs compat GIR support
self.needs_compat_gir = self.array_element.needs_compat_gir
+ # Arrays contain personal info if the array element contains personal info or they themselves are personal info
+ self.contains_personal_info = self.contains_personal_info or self.array_element.contains_personal_info
+
def emit_types(self, hfile, cfile, since, static):
self.array_element.emit_types(hfile, cfile, since, static)
diff --git a/build-aux/qmi-codegen/VariableSequence.py b/build-aux/qmi-codegen/VariableSequence.py
index 4343d67c..061b797b 100644
--- a/build-aux/qmi-codegen/VariableSequence.py
+++ b/build-aux/qmi-codegen/VariableSequence.py
@@ -57,6 +57,13 @@ class VariableSequence(Variable):
self.needs_compat_gir = True
break
+ # We'll contain personal info if at least one of the members contains personal info or we ourselves are personal info
+ if not self.contains_personal_info:
+ for member in self.members:
+ if member['object'].contains_personal_info:
+ self.contains_personal_info = True
+ break
+
def emit_types(self, hfile, cfile, since, static):
for member in self.members:
diff --git a/build-aux/qmi-codegen/VariableStruct.py b/build-aux/qmi-codegen/VariableStruct.py
index 0d084809..3e5b0aed 100644
--- a/build-aux/qmi-codegen/VariableStruct.py
+++ b/build-aux/qmi-codegen/VariableStruct.py
@@ -87,6 +87,13 @@ class VariableStruct(Variable):
self.new_method_gir = '__' + utils.build_underscore_name(self.struct_type_name_gir) + '_new'
self.free_method_gir = '__' + utils.build_underscore_name(self.struct_type_name_gir) + '_free'
+ # We'll contain personal info if at least one of the members contains personal info or we ourselves are personal info
+ if not self.contains_personal_info:
+ for member in self.members:
+ if member['object'].contains_personal_info:
+ self.contains_personal_info = True
+ break
+
def build_variable_declaration(self, line_prefix, variable_name):
raise RuntimeError('Variable of type "struct" can only be defined as array members')
diff --git a/src/libqmi-glib/qmi-message.c b/src/libqmi-glib/qmi-message.c
index d2df0876..3567342e 100644
--- a/src/libqmi-glib/qmi-message.c
+++ b/src/libqmi-glib/qmi-message.c
@@ -1547,11 +1547,7 @@ qmi_message_get_tlv_printable (QmiMessage *self,
g_return_val_if_fail (line_prefix != NULL, NULL);
g_return_val_if_fail (raw != NULL, NULL);
- if (qmi_utils_get_show_personal_info ())
- value_hex = qmi_helpers_str_hex (raw, raw_length, ':');
- else
- value_hex = g_strdup ("###...");
-
+ value_hex = qmi_helpers_str_hex (raw, raw_length, ':');
printable = g_strdup_printf ("%sTLV:\n"
"%s type = 0x%02x\n"
"%s length = %" G_GSIZE_FORMAT "\n"