libkmod-module: check for NULL before accessing pointers

This introduces a few missing NULL-checks in public functions, and
align their docstrings with real behavior by getting rid of copy-paste
mistakes.

Signed-off-by: Luca Bruno <luca.bruno@coreos.com>
This commit is contained in:
Luca Bruno 2018-03-07 10:51:21 +00:00 committed by Lucas De Marchi
parent bdf946d2cf
commit c8f0623ad1
2 changed files with 15 additions and 13 deletions

5
TODO
View File

@ -35,6 +35,11 @@ and libkmod
- kmod_module_symbols_free_list() - kmod_module_symbols_free_list()
- kmod_module_dependency_symbols_free_list() - kmod_module_dependency_symbols_free_list()
* libkmod API breaking changes:
- dedicated error value for all kmod_*_get_crc() functions. Currently there
is no way for callers to distinguish between a valid CRC=0 and the error
code 0.
* index: drop the "open(), seek(), read()" implementation and use another one * index: drop the "open(), seek(), read()" implementation and use another one
with mmap(). When lookup() is called and the file is not mmaped, mmap it. with mmap(). When lookup() is called and the file is not mmaped, mmap it.
Another possibility is to drop the mmap implementation relying on VFS to have Another possibility is to drop the mmap implementation relying on VFS to have

View File

@ -2519,7 +2519,7 @@ KMOD_EXPORT const char *kmod_module_version_get_symbol(const struct kmod_list *e
{ {
struct kmod_module_version *version; struct kmod_module_version *version;
if (entry == NULL) if (entry == NULL || entry->data == NULL)
return NULL; return NULL;
version = entry->data; version = entry->data;
@ -2532,14 +2532,13 @@ KMOD_EXPORT const char *kmod_module_version_get_symbol(const struct kmod_list *e
* *
* Get the crc of a kmod module version. * Get the crc of a kmod module version.
* *
* Returns: the crc of this kmod module version on success or NULL on * Returns: the crc of this kmod module version if available, otherwise default to 0.
* failure. The string is owned by the version, do not free it.
*/ */
KMOD_EXPORT uint64_t kmod_module_version_get_crc(const struct kmod_list *entry) KMOD_EXPORT uint64_t kmod_module_version_get_crc(const struct kmod_list *entry)
{ {
struct kmod_module_version *version; struct kmod_module_version *version;
if (entry == NULL) if (entry == NULL || entry->data == NULL)
return 0; return 0;
version = entry->data; version = entry->data;
@ -2660,7 +2659,7 @@ KMOD_EXPORT const char *kmod_module_symbol_get_symbol(const struct kmod_list *en
{ {
struct kmod_module_symbol *symbol; struct kmod_module_symbol *symbol;
if (entry == NULL) if (entry == NULL || entry->data == NULL)
return NULL; return NULL;
symbol = entry->data; symbol = entry->data;
@ -2673,14 +2672,13 @@ KMOD_EXPORT const char *kmod_module_symbol_get_symbol(const struct kmod_list *en
* *
* Get the crc of a kmod module symbol. * Get the crc of a kmod module symbol.
* *
* Returns: the crc of this kmod module symbol on success or NULL on * Returns: the crc of this kmod module symbol if available, otherwise default to 0.
* failure. The string is owned by the symbol, do not free it.
*/ */
KMOD_EXPORT uint64_t kmod_module_symbol_get_crc(const struct kmod_list *entry) KMOD_EXPORT uint64_t kmod_module_symbol_get_crc(const struct kmod_list *entry)
{ {
struct kmod_module_symbol *symbol; struct kmod_module_symbol *symbol;
if (entry == NULL) if (entry == NULL || entry->data == NULL)
return 0; return 0;
symbol = entry->data; symbol = entry->data;
@ -2806,7 +2804,7 @@ KMOD_EXPORT const char *kmod_module_dependency_symbol_get_symbol(const struct km
{ {
struct kmod_module_dependency_symbol *dependency_symbol; struct kmod_module_dependency_symbol *dependency_symbol;
if (entry == NULL) if (entry == NULL || entry->data == NULL)
return NULL; return NULL;
dependency_symbol = entry->data; dependency_symbol = entry->data;
@ -2819,14 +2817,13 @@ KMOD_EXPORT const char *kmod_module_dependency_symbol_get_symbol(const struct km
* *
* Get the crc of a kmod module dependency_symbol. * Get the crc of a kmod module dependency_symbol.
* *
* Returns: the crc of this kmod module dependency_symbol on success or NULL on * Returns: the crc of this kmod module dependency_symbol if available, otherwise default to 0.
* failure. The string is owned by the dependency_symbol, do not free it.
*/ */
KMOD_EXPORT uint64_t kmod_module_dependency_symbol_get_crc(const struct kmod_list *entry) KMOD_EXPORT uint64_t kmod_module_dependency_symbol_get_crc(const struct kmod_list *entry)
{ {
struct kmod_module_dependency_symbol *dependency_symbol; struct kmod_module_dependency_symbol *dependency_symbol;
if (entry == NULL) if (entry == NULL || entry->data == NULL)
return 0; return 0;
dependency_symbol = entry->data; dependency_symbol = entry->data;
@ -2846,7 +2843,7 @@ KMOD_EXPORT int kmod_module_dependency_symbol_get_bind(const struct kmod_list *e
{ {
struct kmod_module_dependency_symbol *dependency_symbol; struct kmod_module_dependency_symbol *dependency_symbol;
if (entry == NULL) if (entry == NULL || entry->data == NULL)
return 0; return 0;
dependency_symbol = entry->data; dependency_symbol = entry->data;