summaryrefslogtreecommitdiffstats
path: root/libmount/src/libmount.h.in
diff options
context:
space:
mode:
authorKarel Zak2013-04-12 12:35:34 +0200
committerKarel Zak2013-04-12 12:35:34 +0200
commit4569bbeab783632c81ee14793da84b3e29444543 (patch)
treeb165e3f418600bef11edbd962bc7f76b9d95113f /libmount/src/libmount.h.in
parentbuild-sys: release++ (v2.23-rc2) (diff)
downloadkernel-qcow2-util-linux-4569bbeab783632c81ee14793da84b3e29444543.tar.gz
kernel-qcow2-util-linux-4569bbeab783632c81ee14793da84b3e29444543.tar.xz
kernel-qcow2-util-linux-4569bbeab783632c81ee14793da84b3e29444543.zip
libmount: fix mount.nfs segfault, rely on assert() rather than on nonnull
We use mnt_optstr_append_option(&o, mnt_fs_get_vfs_options(fs), NULL); in mount.nfs, unfortunately mnt_optstr_append_option() has been marked ass nonnull(1, 2). That's wrong because append and prepend should robust enough to accept NULL as option name. The patch also removes almost all __attribute__((nonnull). It seems better to rely on assert() to have usable feedback. In many cases (nonnull) is premature optimization for the library. This attribute makes sense for things like strlen() or so... Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=948274 Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'libmount/src/libmount.h.in')
-rw-r--r--libmount/src/libmount.h.in202
1 files changed, 70 insertions, 132 deletions
diff --git a/libmount/src/libmount.h.in b/libmount/src/libmount.h.in
index 1b5df82ac..db479e186 100644
--- a/libmount/src/libmount.h.in
+++ b/libmount/src/libmount.h.in
@@ -187,8 +187,7 @@ enum {
extern void mnt_init_debug(int mask);
/* version.c */
-extern int mnt_parse_version_string(const char *ver_string)
- __ul_attribute__((nonnull));
+extern int mnt_parse_version_string(const char *ver_string);
extern int mnt_get_library_version(const char **ver_string);
extern int mnt_get_library_features(const char ***features);
@@ -198,10 +197,8 @@ extern char *mnt_mangle(const char *str)
extern char *mnt_unmangle(const char *str)
__ul_attribute__((warn_unused_result));
-extern int mnt_fstype_is_netfs(const char *type)
- __ul_attribute__((nonnull));
-extern int mnt_fstype_is_pseudofs(const char *type)
- __ul_attribute__((nonnull));
+extern int mnt_fstype_is_netfs(const char *type);
+extern int mnt_fstype_is_pseudofs(const char *type);
extern int mnt_match_fstype(const char *type, const char *pattern)
__ul_attribute__((warn_unused_result));
@@ -212,7 +209,7 @@ extern const char *mnt_get_swaps_path(void);
extern const char *mnt_get_mtab_path(void);
extern int mnt_has_regular_mtab(const char **mtab, int *writable);
extern char *mnt_get_mountpoint(const char *path)
- __ul_attribute__((nonnull, warn_unused_result));
+ __ul_attribute__((warn_unused_result));
/* cache.c */
extern struct libmnt_cache *mnt_new_cache(void)
@@ -224,8 +221,7 @@ extern int mnt_cache_read_tags(struct libmnt_cache *cache, const char *devname);
extern int mnt_cache_device_has_tag(struct libmnt_cache *cache,
const char *devname,
const char *token,
- const char *value)
- __ul_attribute__((nonnull));
+ const char *value);
extern char *mnt_cache_find_tag_value(struct libmnt_cache *cache,
const char *devname, const char *token);
@@ -245,24 +241,18 @@ extern char *mnt_pretty_path(const char *path, struct libmnt_cache *cache)
/* optstr.c */
extern int mnt_optstr_next_option(char **optstr, char **name, size_t *namesz,
- char **value, size_t *valuesz)
- __ul_attribute__((nonnull(1)));
+ char **value, size_t *valuesz);
extern int mnt_optstr_append_option(char **optstr, const char *name,
- const char *value)
- __ul_attribute__((nonnull(1, 2)));
+ const char *value);
extern int mnt_optstr_prepend_option(char **optstr, const char *name,
- const char *value)
- __ul_attribute__((nonnull(1, 2)));
+ const char *value);
extern int mnt_optstr_get_option(const char *optstr, const char *name,
char **value, size_t *valsz);
extern int mnt_optstr_set_option(char **optstr, const char *name,
- const char *value)
- __ul_attribute__((nonnull(1, 2)));
-extern int mnt_optstr_remove_option(char **optstr, const char *name)
- __ul_attribute__((nonnull));
-extern int mnt_optstr_deduplicate_option(char **optstr, const char *name)
- __ul_attribute__((nonnull));
+ const char *value);
+extern int mnt_optstr_remove_option(char **optstr, const char *name);
+extern int mnt_optstr_deduplicate_option(char **optstr, const char *name);
extern int mnt_split_optstr(const char *optstr,
char **user, char **vfs, char **fs,
@@ -301,11 +291,10 @@ extern const struct libmnt_optmap *mnt_get_builtin_optmap(int id);
/* lock.c */
extern struct libmnt_lock *mnt_new_lock(const char *datafile, pid_t id)
- __ul_attribute__((nonnull, warn_unused_result));
+ __ul_attribute__((warn_unused_result));
extern void mnt_free_lock(struct libmnt_lock *ml);
-extern void mnt_unlock_file(struct libmnt_lock *ml)
- __ul_attribute__((nonnull));
+extern void mnt_unlock_file(struct libmnt_lock *ml);
extern int mnt_lock_file(struct libmnt_lock *ml);
extern int mnt_lock_block_signals(struct libmnt_lock *ml, int enable);
@@ -314,27 +303,21 @@ extern struct libmnt_fs *mnt_new_fs(void)
__ul_attribute__((warn_unused_result));
extern void mnt_free_fs(struct libmnt_fs *fs);
-extern void mnt_reset_fs(struct libmnt_fs *fs)
- __ul_attribute__((nonnull));
+extern void mnt_reset_fs(struct libmnt_fs *fs);
extern struct libmnt_fs *mnt_copy_fs(struct libmnt_fs *dest,
const struct libmnt_fs *src)
__ul_attribute__((warn_unused_result));
-extern void *mnt_fs_get_userdata(struct libmnt_fs *fs)
- __ul_attribute__((nonnull));
+extern void *mnt_fs_get_userdata(struct libmnt_fs *fs);
extern int mnt_fs_set_userdata(struct libmnt_fs *fs, void *data);
-extern const char *mnt_fs_get_source(struct libmnt_fs *fs)
- __ul_attribute__((nonnull));
+extern const char *mnt_fs_get_source(struct libmnt_fs *fs);
extern int mnt_fs_set_source(struct libmnt_fs *fs, const char *source);
extern const char *mnt_fs_get_srcpath(struct libmnt_fs *fs);
extern int mnt_fs_get_tag(struct libmnt_fs *fs, const char **name,
- const char **value)
- __ul_attribute__((nonnull(1)));
-extern const char *mnt_fs_get_target(struct libmnt_fs *fs)
- __ul_attribute__((nonnull));
+ const char **value);
+extern const char *mnt_fs_get_target(struct libmnt_fs *fs);
extern int mnt_fs_set_target(struct libmnt_fs *fs, const char *target);
-extern const char *mnt_fs_get_fstype(struct libmnt_fs *fs)
- __ul_attribute__((nonnull));
+extern const char *mnt_fs_get_fstype(struct libmnt_fs *fs);
extern int mnt_fs_set_fstype(struct libmnt_fs *fs, const char *fstype);
extern int mnt_fs_streq_srcpath(struct libmnt_fs *fs, const char *path)
@@ -343,11 +326,11 @@ extern int mnt_fs_streq_target(struct libmnt_fs *fs, const char *path)
__ul_attribute__((warn_unused_result));
extern char *mnt_fs_strdup_options(struct libmnt_fs *fs)
- __ul_attribute__((nonnull, warn_unused_result));
+ __ul_attribute__((warn_unused_result));
extern const char *mnt_fs_get_options(struct libmnt_fs *fs)
- __ul_attribute__((nonnull, warn_unused_result));
+ __ul_attribute__((warn_unused_result));
extern const char *mnt_fs_get_optional_fields(struct libmnt_fs *fs)
- __ul_attribute__((nonnull, warn_unused_result));
+ __ul_attribute__((warn_unused_result));
extern int mnt_fs_get_propagation(struct libmnt_fs *fs, unsigned long *flags);
extern int mnt_fs_set_options(struct libmnt_fs *fs, const char *optstr);
@@ -357,81 +340,56 @@ extern int mnt_fs_prepend_options(struct libmnt_fs *fs, const char *optstr);
extern int mnt_fs_get_option(struct libmnt_fs *fs, const char *name,
char **value, size_t *valsz);
-extern const char *mnt_fs_get_fs_options(struct libmnt_fs *fs)
- __ul_attribute__((nonnull));
-extern const char *mnt_fs_get_vfs_options(struct libmnt_fs *fs)
- __ul_attribute__((nonnull));
-extern const char *mnt_fs_get_user_options(struct libmnt_fs *fs)
- __ul_attribute__((nonnull));
+extern const char *mnt_fs_get_fs_options(struct libmnt_fs *fs);
+extern const char *mnt_fs_get_vfs_options(struct libmnt_fs *fs);
+extern const char *mnt_fs_get_user_options(struct libmnt_fs *fs);
-extern const char *mnt_fs_get_attributes(struct libmnt_fs *fs)
- __ul_attribute__((nonnull));
+extern const char *mnt_fs_get_attributes(struct libmnt_fs *fs);
extern int mnt_fs_set_attributes(struct libmnt_fs *fs, const char *optstr);
extern int mnt_fs_get_attribute(struct libmnt_fs *fs, const char *name,
char **value, size_t *valsz);
extern int mnt_fs_append_attributes(struct libmnt_fs *fs, const char *optstr);
extern int mnt_fs_prepend_attributes(struct libmnt_fs *fs, const char *optstr);
-extern int mnt_fs_get_freq(struct libmnt_fs *fs)
- __ul_attribute__((nonnull));
+extern int mnt_fs_get_freq(struct libmnt_fs *fs);
extern int mnt_fs_set_freq(struct libmnt_fs *fs, int freq);
-extern int mnt_fs_get_passno(struct libmnt_fs *fs)
- __ul_attribute__((nonnull));
+extern int mnt_fs_get_passno(struct libmnt_fs *fs);
extern int mnt_fs_set_passno(struct libmnt_fs *fs, int passno);
-extern const char *mnt_fs_get_root(struct libmnt_fs *fs)
- __ul_attribute__((nonnull));
+extern const char *mnt_fs_get_root(struct libmnt_fs *fs);
extern int mnt_fs_set_root(struct libmnt_fs *fs, const char *root);
-extern const char *mnt_fs_get_bindsrc(struct libmnt_fs *fs)
- __ul_attribute__((nonnull));
+extern const char *mnt_fs_get_bindsrc(struct libmnt_fs *fs);
extern int mnt_fs_set_bindsrc(struct libmnt_fs *fs, const char *src);
-extern int mnt_fs_get_id(struct libmnt_fs *fs)
- __ul_attribute__((nonnull));
-extern int mnt_fs_get_parent_id(struct libmnt_fs *fs)
- __ul_attribute__((nonnull));
-extern dev_t mnt_fs_get_devno(struct libmnt_fs *fs)
- __ul_attribute__((nonnull));
-extern pid_t mnt_fs_get_tid(struct libmnt_fs *fs)
- __ul_attribute__((nonnull));
+extern int mnt_fs_get_id(struct libmnt_fs *fs);
+extern int mnt_fs_get_parent_id(struct libmnt_fs *fs);
+extern dev_t mnt_fs_get_devno(struct libmnt_fs *fs);
+extern pid_t mnt_fs_get_tid(struct libmnt_fs *fs);
-extern const char *mnt_fs_get_swaptype(struct libmnt_fs *fs)
- __ul_attribute__((nonnull));
-extern off_t mnt_fs_get_size(struct libmnt_fs *fs)
- __ul_attribute__((nonnull));
-extern off_t mnt_fs_get_usedsize(struct libmnt_fs *fs)
- __ul_attribute__((nonnull));
-extern int mnt_fs_get_priority(struct libmnt_fs *fs)
- __ul_attribute__((nonnull));
+extern const char *mnt_fs_get_swaptype(struct libmnt_fs *fs);
+extern off_t mnt_fs_get_size(struct libmnt_fs *fs);
+extern off_t mnt_fs_get_usedsize(struct libmnt_fs *fs);
+extern int mnt_fs_get_priority(struct libmnt_fs *fs);
extern int mnt_fs_match_target(struct libmnt_fs *fs, const char *target,
- struct libmnt_cache *cache)
- __ul_attribute__((nonnull(1)));
+ struct libmnt_cache *cache);
extern int mnt_fs_match_source(struct libmnt_fs *fs, const char *source,
- struct libmnt_cache *cache)
- __ul_attribute__((nonnull(1)));
-extern int mnt_fs_match_fstype(struct libmnt_fs *fs, const char *types)
- __ul_attribute__((nonnull(1)));
-extern int mnt_fs_match_options(struct libmnt_fs *fs, const char *options)
- __ul_attribute__((nonnull(1)));
-extern int mnt_fs_print_debug(struct libmnt_fs *fs, FILE *file)
- __ul_attribute__((nonnull));
+ struct libmnt_cache *cache);
+extern int mnt_fs_match_fstype(struct libmnt_fs *fs, const char *types);
+extern int mnt_fs_match_options(struct libmnt_fs *fs, const char *options);
+extern int mnt_fs_print_debug(struct libmnt_fs *fs, FILE *file);
-extern int mnt_fs_is_kernel(struct libmnt_fs *fs)
- __ul_attribute__((nonnull));
-extern int mnt_fs_is_swaparea(struct libmnt_fs *fs)
- __ul_attribute__((nonnull));
-extern int mnt_fs_is_netfs(struct libmnt_fs *fs)
- __ul_attribute__((nonnull));
-extern int mnt_fs_is_pseudofs(struct libmnt_fs *fs)
- __ul_attribute__((nonnull));
+extern int mnt_fs_is_kernel(struct libmnt_fs *fs);
+extern int mnt_fs_is_swaparea(struct libmnt_fs *fs);
+extern int mnt_fs_is_netfs(struct libmnt_fs *fs);
+extern int mnt_fs_is_pseudofs(struct libmnt_fs *fs);
extern void mnt_free_mntent(struct mntent *mnt);
extern int mnt_fs_to_mntent(struct libmnt_fs *fs, struct mntent **mnt);
/* tab-parse.c */
extern struct libmnt_table *mnt_new_table_from_file(const char *filename)
- __ul_attribute__((nonnull, warn_unused_result));
+ __ul_attribute__((warn_unused_result));
extern struct libmnt_table *mnt_new_table_from_dir(const char *dirname)
- __ul_attribute__((nonnull, warn_unused_result));
+ __ul_attribute__((warn_unused_result));
extern int mnt_table_parse_stream(struct libmnt_table *tb, FILE *f,
const char *filename);
extern int mnt_table_parse_file(struct libmnt_table *tb, const char *filename);
@@ -484,27 +442,21 @@ extern int mnt_table_find_next_fs(struct libmnt_table *tb,
void *userdata,
struct libmnt_fs **fs);
-extern int mnt_table_is_fs_mounted(struct libmnt_table *tb, struct libmnt_fs *fstab_fs)
- __ul_attribute__((nonnull));
-
+extern int mnt_table_is_fs_mounted(struct libmnt_table *tb, struct libmnt_fs *fstab_fs);
/* tab_update.c */
extern struct libmnt_update *mnt_new_update(void)
__ul_attribute__((warn_unused_result));
extern void mnt_free_update(struct libmnt_update *upd);
-extern int mnt_update_is_ready(struct libmnt_update *upd)
- __ul_attribute__((nonnull));
+extern int mnt_update_is_ready(struct libmnt_update *upd);
extern int mnt_update_set_fs(struct libmnt_update *upd, unsigned long mountflags,
const char *target, struct libmnt_fs *fs);
extern int mnt_update_table(struct libmnt_update *upd, struct libmnt_lock *lc);
-extern unsigned long mnt_update_get_mflags(struct libmnt_update *upd)
- __ul_attribute__((nonnull));
+extern unsigned long mnt_update_get_mflags(struct libmnt_update *upd);
extern int mnt_update_force_rdonly(struct libmnt_update *upd, int rdonly);
-extern const char *mnt_update_get_filename(struct libmnt_update *upd)
- __ul_attribute__((nonnull));
-extern struct libmnt_fs *mnt_update_get_fs(struct libmnt_update *upd)
- __ul_attribute__((nonnull));
+extern const char *mnt_update_get_filename(struct libmnt_update *upd);
+extern struct libmnt_fs *mnt_update_get_fs(struct libmnt_update *upd);
/* tab_diff.c */
enum {
@@ -578,8 +530,8 @@ extern int mnt_context_enable_loopdel(struct libmnt_context *cxt, int enable);
extern int mnt_context_enable_fork(struct libmnt_context *cxt, int enable);
extern int mnt_context_disable_swapmatch(struct libmnt_context *cxt, int disable);
-extern int mnt_context_get_optsmode(struct libmnt_context *cxt)
- __ul_attribute__((nonnull));
+extern int mnt_context_get_optsmode(struct libmnt_context *cxt);
+
extern int mnt_context_is_lazy(struct libmnt_context *cxt)
__ul_attribute__((nonnull));
extern int mnt_context_is_rdonly_umount(struct libmnt_context *cxt)
@@ -614,28 +566,22 @@ extern int mnt_context_wait_for_children(struct libmnt_context *cxt,
int *nchildren, int *nerrs);
extern int mnt_context_is_fs_mounted(struct libmnt_context *cxt,
- struct libmnt_fs *fs, int *mounted)
- __ul_attribute__((nonnull));
+ struct libmnt_fs *fs, int *mounted);
extern int mnt_context_set_fs(struct libmnt_context *cxt, struct libmnt_fs *fs);
-extern struct libmnt_fs *mnt_context_get_fs(struct libmnt_context *cxt)
- __ul_attribute__((nonnull));
+extern struct libmnt_fs *mnt_context_get_fs(struct libmnt_context *cxt);
extern int mnt_context_set_source(struct libmnt_context *cxt, const char *source);
extern int mnt_context_set_target(struct libmnt_context *cxt, const char *target);
extern int mnt_context_set_fstype(struct libmnt_context *cxt, const char *fstype);
-extern const char *mnt_context_get_source(struct libmnt_context *cxt)
- __ul_attribute__((nonnull));
-extern const char *mnt_context_get_target(struct libmnt_context *cxt)
- __ul_attribute__((nonnull));
-extern const char *mnt_context_get_fstype(struct libmnt_context *cxt)
- __ul_attribute__((nonnull));
+extern const char *mnt_context_get_source(struct libmnt_context *cxt);
+extern const char *mnt_context_get_target(struct libmnt_context *cxt);
+extern const char *mnt_context_get_fstype(struct libmnt_context *cxt);
extern int mnt_context_set_options(struct libmnt_context *cxt, const char *optstr);
extern int mnt_context_append_options(struct libmnt_context *cxt, const char *optstr);
-extern const char *mnt_context_get_options(struct libmnt_context *cxt)
- __ul_attribute__((nonnull));
+extern const char *mnt_context_get_options(struct libmnt_context *cxt);
extern int mnt_context_set_fstype_pattern(struct libmnt_context *cxt, const char *pattern);
extern int mnt_context_set_options_pattern(struct libmnt_context *cxt, const char *pattern);
@@ -659,10 +605,8 @@ extern int mnt_context_get_table(struct libmnt_context *cxt,
struct libmnt_table **tb);
extern int mnt_context_set_cache(struct libmnt_context *cxt,
struct libmnt_cache *cache);
-extern struct libmnt_cache *mnt_context_get_cache(struct libmnt_context *cxt)
- __ul_attribute__((nonnull));
-extern struct libmnt_lock *mnt_context_get_lock(struct libmnt_context *cxt)
- __ul_attribute__((nonnull));
+extern struct libmnt_cache *mnt_context_get_cache(struct libmnt_context *cxt);
+extern struct libmnt_lock *mnt_context_get_lock(struct libmnt_context *cxt);
extern int mnt_context_set_mflags(struct libmnt_context *cxt,
unsigned long flags);
extern int mnt_context_get_mflags(struct libmnt_context *cxt,
@@ -676,19 +620,14 @@ extern int mnt_context_set_mountdata(struct libmnt_context *cxt, void *data);
extern int mnt_context_apply_fstab(struct libmnt_context *cxt);
extern int mnt_context_reset_status(struct libmnt_context *cxt);
-extern int mnt_context_get_status(struct libmnt_context *cxt)
- __ul_attribute__((nonnull));
+extern int mnt_context_get_status(struct libmnt_context *cxt);
-extern int mnt_context_helper_executed(struct libmnt_context *cxt)
- __ul_attribute__((nonnull));
-extern int mnt_context_get_helper_status(struct libmnt_context *cxt)
- __ul_attribute__((nonnull));
+extern int mnt_context_helper_executed(struct libmnt_context *cxt);
+extern int mnt_context_get_helper_status(struct libmnt_context *cxt);
-extern int mnt_context_syscall_called(struct libmnt_context *cxt)
- __ul_attribute__((nonnull));
+extern int mnt_context_syscall_called(struct libmnt_context *cxt);
-extern int mnt_context_get_syscall_errno(struct libmnt_context *cxt)
- __ul_attribute__((nonnull));
+extern int mnt_context_get_syscall_errno(struct libmnt_context *cxt);
extern int mnt_context_strerror(struct libmnt_context *cxt, char *buf,
size_t bufsiz);
@@ -720,8 +659,7 @@ extern int mnt_context_prepare_umount(struct libmnt_context *cxt)
extern int mnt_context_do_umount(struct libmnt_context *cxt);
extern int mnt_context_finalize_umount(struct libmnt_context *cxt);
-extern int mnt_context_tab_applied(struct libmnt_context *cxt)
- __ul_attribute__((nonnull));
+extern int mnt_context_tab_applied(struct libmnt_context *cxt);
extern int mnt_context_set_syscall_status(struct libmnt_context *cxt, int status);
/*