diff options
author | Akash Aggarwal <quic_akasagga@quicinc.com> | 2022-09-28 18:29:58 +0530 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2022-10-17 11:49:38 +0000 |
commit | ff7c0c9b84c0b8e32760b5b6e9e978048666d505 (patch) | |
tree | d56e9b0fee3aab1ed9b2f023dd2e3c03bb0b04d6 | |
parent | a399494a2b9e17c624bf175430847aedd4d03d59 (diff) | |
download | libqmi-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.py | 15 | ||||
-rw-r--r-- | build-aux/qmi-codegen/Variable.py | 5 | ||||
-rw-r--r-- | build-aux/qmi-codegen/VariableArray.py | 3 | ||||
-rw-r--r-- | build-aux/qmi-codegen/VariableSequence.py | 7 | ||||
-rw-r--r-- | build-aux/qmi-codegen/VariableStruct.py | 7 | ||||
-rw-r--r-- | src/libqmi-glib/qmi-message.c | 6 |
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" |