summaryrefslogtreecommitdiff
path: root/src/analysis/contents
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2019-11-28 22:41:37 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2019-11-28 22:41:37 (GMT)
commit48395d4471d87c20bdbd06bbab1ae3af938ff823 (patch)
tree00aaaabb7370d6163ed9a2a4f77f9a177f8126f7 /src/analysis/contents
parent472d566943f527e18eb95f31dbe70c50043396aa (diff)
Improved the API for binary contents a little bit.
Diffstat (limited to 'src/analysis/contents')
-rw-r--r--src/analysis/contents/encapsulated.c75
-rw-r--r--src/analysis/contents/encapsulated.h9
-rw-r--r--src/analysis/contents/file.c30
-rw-r--r--src/analysis/contents/file.h3
-rw-r--r--src/analysis/contents/restricted.c26
-rw-r--r--src/analysis/contents/restricted.h3
6 files changed, 146 insertions, 0 deletions
diff --git a/src/analysis/contents/encapsulated.c b/src/analysis/contents/encapsulated.c
index 8a6ecae..69d4a75 100644
--- a/src/analysis/contents/encapsulated.c
+++ b/src/analysis/contents/encapsulated.c
@@ -824,3 +824,78 @@ static bool g_encaps_content_read_leb128(const GEncapsContent *content, vmpa2t *
return result;
}
+
+
+/******************************************************************************
+* *
+* Paramètres : content = contenu binaire à venir consulter. *
+* *
+* Description : Indique la base d'un contenu binaire encapsulé. *
+* *
+* Retour : Instance de contenu binaire ou NULL si aucune. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+GBinContent *g_encaps_content_get_base(const GEncapsContent *content)
+{
+ GBinContent *result; /* Contenu binaire à renvoyer */
+
+ result = content->base;
+
+ if (result != NULL)
+ g_object_ref(G_OBJECT(result));
+
+ return result;
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : content = contenu binaire à venir consulter. *
+* *
+* Description : Fournit le chemin vers le contenu interne représenté. *
+* *
+* Retour : Chemin d'accès au contenu binaire. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+const char *g_encaps_content_get_path(const GEncapsContent *content)
+{
+ char *result; /* Chemin d'accès à retourner */
+
+ result = content->path;
+
+ return result;
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : content = contenu binaire à venir consulter. *
+* *
+* Description : Indique le contenu binaire embarqué dans une encapsulation. *
+* *
+* Retour : Instance de contenu binaire ou NULL si aucune. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+GBinContent *g_encaps_content_get_endpoint(const GEncapsContent *content)
+{
+ GBinContent *result; /* Contenu binaire à renvoyer */
+
+ result = content->endpoint;
+
+ if (result != NULL)
+ g_object_ref(G_OBJECT(result));
+
+ return result;
+
+}
diff --git a/src/analysis/contents/encapsulated.h b/src/analysis/contents/encapsulated.h
index 5d21a18..3efa733 100644
--- a/src/analysis/contents/encapsulated.h
+++ b/src/analysis/contents/encapsulated.h
@@ -56,6 +56,15 @@ GBinContent *g_encaps_content_new(GBinContent *, const char *, GBinContent *);
/* Charge en mémoire un contenu encapsulé à partir d'XML. */
GBinContent *g_encaps_content_new_from_xml(xmlXPathContextPtr, const char *, const char *);
+/* Indique la base d'un contenu binaire encapsulé. */
+GBinContent *g_encaps_content_get_base(const GEncapsContent *);
+
+/* Fournit le chemin vers le contenu interne représenté. */
+const char *g_encaps_content_get_path(const GEncapsContent *);
+
+/* Indique le contenu binaire embarqué dans une encapsulation. */
+GBinContent *g_encaps_content_get_endpoint(const GEncapsContent *);
+
#endif /* _ANALYSIS_CONTENTS_ENCAPSULATED_H */
diff --git a/src/analysis/contents/file.c b/src/analysis/contents/file.c
index 5509455..11d5802 100644
--- a/src/analysis/contents/file.c
+++ b/src/analysis/contents/file.c
@@ -179,6 +179,7 @@ static void g_file_content_class_init(GFileContentClass *klass)
static void g_file_content_init(GFileContent *content)
{
GContentAttributes *empty; /* Jeu d'attributs vide */
+ vmpa2t dummy; /* Localisation nulle */
content->attribs = NULL;
@@ -186,6 +187,12 @@ static void g_file_content_init(GFileContent *content)
g_binary_content_set_attributes(G_BIN_CONTENT(content), empty);
+ content->filename = NULL;
+ content->data = NULL;
+
+ init_vmpa(&dummy, VMPA_NO_PHYSICAL, VMPA_NO_VIRTUAL);
+ init_mrange(&content->range, &dummy, 0);
+
}
@@ -1003,3 +1010,26 @@ static bool g_file_content_read_leb128(const GFileContent *content, vmpa2t *addr
return result;
}
+
+
+/******************************************************************************
+* *
+* Paramètres : content = contenu binaire à venir consulter. *
+* *
+* Description : Fournit le nom de fichier associé au contenu binaire. *
+* *
+* Retour : Chemin d'accès au contenu binaire. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+const char *g_file_content_get_filename(const GFileContent *content)
+{
+ char *result; /* Chemin d'accès à retourner */
+
+ result = content->filename;
+
+ return result;
+
+}
diff --git a/src/analysis/contents/file.h b/src/analysis/contents/file.h
index b68d466..a3856df 100644
--- a/src/analysis/contents/file.h
+++ b/src/analysis/contents/file.h
@@ -56,6 +56,9 @@ GBinContent *g_file_content_new(const char *);
/* Charge en mémoire le contenu d'un fichier à partir d'XML. */
GBinContent *g_file_content_new_from_xml(xmlXPathContextPtr, const char *, const char *);
+/* Fournit le nom de fichier associé au contenu binaire. */
+const char *g_file_content_get_filename(const GFileContent *);
+
#endif /* _ANALYSIS_CONTENTS_FILE_H */
diff --git a/src/analysis/contents/restricted.c b/src/analysis/contents/restricted.c
index 8e5242e..5c781e7 100644
--- a/src/analysis/contents/restricted.c
+++ b/src/analysis/contents/restricted.c
@@ -156,6 +156,12 @@ static void g_restricted_content_class_init(GRestrictedContentClass *klass)
static void g_restricted_content_init(GRestrictedContent *content)
{
+ vmpa2t dummy; /* Localisation nulle */
+
+ content->internal = NULL;
+
+ init_vmpa(&dummy, VMPA_NO_PHYSICAL, VMPA_NO_VIRTUAL);
+ init_mrange(&content->range, &dummy, 0);
}
@@ -833,3 +839,23 @@ static bool g_restricted_content_read_leb128(const GRestrictedContent *content,
return result;
}
+
+
+/******************************************************************************
+* *
+* Paramètres : content = contenu binaire à venir lire. *
+* range = espace de restrictions pour les accès. [OUT] *
+* *
+* Description : Indique l'espace de restriction appliqué à un contenu. *
+* *
+* Retour : - *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+void g_restricted_content_get_range(const GRestrictedContent *content, mrange_t *range)
+{
+ copy_mrange(range, &content->range);
+
+}
diff --git a/src/analysis/contents/restricted.h b/src/analysis/contents/restricted.h
index 8b87453..7f264c4 100644
--- a/src/analysis/contents/restricted.h
+++ b/src/analysis/contents/restricted.h
@@ -56,6 +56,9 @@ GBinContent *g_restricted_content_new(GBinContent *, const mrange_t *);
/* Charge en mémoire le contenu d'un contenu restreint. */
GBinContent *g_restricted_content_new_ro(const GBinContent *, const mrange_t *);
+/* Indique l'espace de restriction appliqué à un contenu. */
+void g_restricted_content_get_range(const GRestrictedContent *, mrange_t *);
+
#endif /* _ANALYSIS_CONTENTS_RESTRICTED_H */