lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20240607042615.2069840-5-chengzhihao1@huawei.com>
Date: Fri, 7 Jun 2024 12:24:29 +0800
From: Zhihao Cheng <chengzhihao1@...wei.com>
To: <richard@....at>, <david.oberhollenzer@...ma-star.at>,
	<miquel.raynal@...tlin.com>, <yi.zhang@...wei.com>, <xiangyang3@...wei.com>,
	<huangxiaojia2@...wei.com>
CC: <linux-mtd@...ts.infradead.org>, <linux-kernel@...r.kernel.org>
Subject: [RFC PATCH mtd-utils 004/110] ubifs-utils: Decouple mkfs.ubifs.h out of other modules

Header file mkfs.ubifs.h is included in other modules(eg. compr.c, lpt.c,
fscrypt.h, sign.c), decouple it out of other modules.

There are two parts in mkfs.ubifs.h:
1. common functions, for example dbg_msg, err_msg and write_leb, move
   these functions into common/defs.h and common/ubifs.h.
2. devtable related definations, move them into a new header file
   common/devtable.h.

Splitting common functions from mkfs.ubifs.h is also a preparation for
importing libubifs(from linux kernel) to replace current UBIFS libs.

Signed-off-by: Zhihao Cheng <chengzhihao1@...wei.com>
---
 ubifs-utils/Makemodule.am                          |  4 +-
 ubifs-utils/common/compr.c                         | 19 ++---
 ubifs-utils/common/compr.h                         |  8 --
 ubifs-utils/common/crypto.c                        |  6 +-
 ubifs-utils/common/defs.h                          | 24 ++++++
 ubifs-utils/common/devtable.c                      |  9 ++-
 .../{mkfs.ubifs/mkfs.ubifs.h => common/devtable.h} | 85 +---------------------
 ubifs-utils/common/fscrypt.c                       |  4 +
 ubifs-utils/common/fscrypt.h                       |  8 +-
 ubifs-utils/common/lpt.c                           | 10 ++-
 ubifs-utils/common/lpt.h                           |  2 +
 ubifs-utils/common/sign.c                          |  9 ++-
 ubifs-utils/common/ubifs.h                         |  5 ++
 ubifs-utils/mkfs.ubifs/mkfs.ubifs.c                | 21 +++++-
 14 files changed, 99 insertions(+), 115 deletions(-)
 rename ubifs-utils/{mkfs.ubifs/mkfs.ubifs.h => common/devtable.h} (53%)

diff --git a/ubifs-utils/Makemodule.am b/ubifs-utils/Makemodule.am
index 4a617c19..8af65be7 100644
--- a/ubifs-utils/Makemodule.am
+++ b/ubifs-utils/Makemodule.am
@@ -9,6 +9,7 @@ common_SOURCES = \
 	ubifs-utils/common/hashtable/hashtable_private.h \
 	ubifs-utils/common/hashtable/hashtable.c \
 	ubifs-utils/common/hashtable/hashtable_itr.c \
+	ubifs-utils/common/devtable.h \
 	ubifs-utils/common/devtable.c \
 	ubifs-utils/common/ubifs.h \
 	ubifs-utils/common/key.h \
@@ -27,12 +28,11 @@ endif
 
 mkfs_ubifs_SOURCES = \
 	$(common_SOURCES) \
-	ubifs-utils/mkfs.ubifs/mkfs.ubifs.h \
 	ubifs-utils/mkfs.ubifs/mkfs.ubifs.c
 
 mkfs_ubifs_LDADD = libmtd.a libubi.a $(ZLIB_LIBS) $(LZO_LIBS) $(ZSTD_LIBS) $(UUID_LIBS) $(LIBSELINUX_LIBS) $(OPENSSL_LIBS) -lm
 mkfs_ubifs_CPPFLAGS = $(AM_CPPFLAGS) $(ZLIB_CFLAGS) $(LZO_CFLAGS) $(ZSTD_CFLAGS) $(UUID_CFLAGS) $(LIBSELINUX_CFLAGS) \
-	-I$(top_srcdir)/ubi-utils/include -I$(top_srcdir)/ubifs-utils/mkfs.ubifs/ -I$(top_srcdir)/ubifs-utils/common
+	-I$(top_srcdir)/ubi-utils/include -I$(top_srcdir)/ubifs-utils/common
 
 EXTRA_DIST += ubifs-utils/common/README
 
diff --git a/ubifs-utils/common/compr.c b/ubifs-utils/common/compr.c
index e4324f34..6f901511 100644
--- a/ubifs-utils/common/compr.c
+++ b/ubifs-utils/common/compr.c
@@ -39,11 +39,12 @@
 #endif
 
 #include "compr.h"
-#include "mkfs.ubifs.h"
+#include "ubifs.h"
 
 static void *lzo_mem;
 static unsigned long long errcnt = 0;
 #ifdef WITH_LZO
+extern struct ubifs_info info_;
 static struct ubifs_info *c = &info_;
 #endif
 
@@ -181,12 +182,12 @@ static int favor_lzo_compress(void *in_buf, size_t in_len, void *out_buf,
 
 select_lzo:
 	*out_len = lzo_len;
-	*type = MKFS_UBIFS_COMPR_LZO;
+	*type = UBIFS_COMPR_LZO;
 	return 0;
 
 select_zlib:
 	*out_len = zlib_len;
-	*type = MKFS_UBIFS_COMPR_ZLIB;
+	*type = UBIFS_COMPR_ZLIB;
 	memcpy(out_buf, zlib_buf, zlib_len);
 	return 0;
 }
@@ -199,7 +200,7 @@ int compress_data(void *in_buf, size_t in_len, void *out_buf, size_t *out_len,
 
 	if (in_len < UBIFS_MIN_COMPR_LEN) {
 		no_compress(in_buf, in_len, out_buf, out_len);
-		return MKFS_UBIFS_COMPR_NONE;
+		return UBIFS_COMPR_NONE;
 	}
 
 #if defined(WITH_LZO) && defined(WITH_ZLIB)
@@ -211,21 +212,21 @@ int compress_data(void *in_buf, size_t in_len, void *out_buf, size_t *out_len,
 #endif
 		switch (type) {
 #ifdef WITH_LZO
-		case MKFS_UBIFS_COMPR_LZO:
+		case UBIFS_COMPR_LZO:
 			ret = lzo_compress(in_buf, in_len, out_buf, out_len);
 			break;
 #endif
 #ifdef WITH_ZLIB
-		case MKFS_UBIFS_COMPR_ZLIB:
+		case UBIFS_COMPR_ZLIB:
 			ret = zlib_deflate(in_buf, in_len, out_buf, out_len);
 			break;
 #endif
 #ifdef WITH_ZSTD
-		case MKFS_UBIFS_COMPR_ZSTD:
+		case UBIFS_COMPR_ZSTD:
 			ret = zstd_compress(in_buf, in_len, out_buf, out_len);
 			break;
 #endif
-		case MKFS_UBIFS_COMPR_NONE:
+		case UBIFS_COMPR_NONE:
 			ret = 1;
 			break;
 		default:
@@ -236,7 +237,7 @@ int compress_data(void *in_buf, size_t in_len, void *out_buf, size_t *out_len,
 	}
 	if (ret || *out_len >= in_len) {
 		no_compress(in_buf, in_len, out_buf, out_len);
-		return MKFS_UBIFS_COMPR_NONE;
+		return UBIFS_COMPR_NONE;
 	}
 	return type;
 }
diff --git a/ubifs-utils/common/compr.h b/ubifs-utils/common/compr.h
index d58c7c7b..3e8e9b61 100644
--- a/ubifs-utils/common/compr.h
+++ b/ubifs-utils/common/compr.h
@@ -31,14 +31,6 @@
  */
 #define WORST_COMPR_FACTOR 4
 
-enum compression_type
-{
-	MKFS_UBIFS_COMPR_NONE,
-	MKFS_UBIFS_COMPR_LZO,
-	MKFS_UBIFS_COMPR_ZLIB,
-	MKFS_UBIFS_COMPR_ZSTD,
-};
-
 int compress_data(void *in_buf, size_t in_len, void *out_buf, size_t *out_len,
 		  int type);
 int init_compression(void);
diff --git a/ubifs-utils/common/crypto.c b/ubifs-utils/common/crypto.c
index 19c445e8..60a67a4e 100644
--- a/ubifs-utils/common/crypto.c
+++ b/ubifs-utils/common/crypto.c
@@ -17,14 +17,16 @@
  * Authors: David Oberhollenzer <david.oberhollenzer@...ma-star.at>
  */
 
-#define PROGRAM_NAME "mkfs.ubifs"
 #include <openssl/evp.h>
 #include <openssl/err.h>
+#include <openssl/rand.h>
 #include <string.h>
 #include <assert.h>
 
-#include "fscrypt.h"
+#define PROGRAM_NAME "mkfs.ubifs"
 #include "common.h"
+#include "defs.h"
+#include "fscrypt.h"
 
 static int do_hash(const EVP_MD *md, const unsigned char *in, size_t len, unsigned char *out)
 {
diff --git a/ubifs-utils/common/defs.h b/ubifs-utils/common/defs.h
index 8db52776..e1aded03 100644
--- a/ubifs-utils/common/defs.h
+++ b/ubifs-utils/common/defs.h
@@ -6,6 +6,30 @@
 #ifndef __UBIFS_DEFS_H__
 #define __UBIFS_DEFS_H__
 
+#include <stdlib.h>
+#include <stdio.h>
+#include <limits.h>
+#include <byteswap.h>
+#include <errno.h>
+
+extern int debug_level;
+
+#define dbg_msg(lvl, fmt, ...) do {if (debug_level >= lvl)                \
+	printf("mkfs.ubifs: %s: " fmt "\n", __FUNCTION__, ##__VA_ARGS__); \
+} while(0)
+
+#define err_msg(fmt, ...) ({                                \
+	fprintf(stderr, "Error: " fmt "\n", ##__VA_ARGS__); \
+	-1;                                                 \
+})
+
+#define sys_err_msg(fmt, ...) ({                                         \
+	int err_ = errno;                                                \
+	fprintf(stderr, "Error: " fmt "\n", ##__VA_ARGS__);              \
+	fprintf(stderr, "       %s (error %d)\n", strerror(err_), err_); \
+	-1;                                                              \
+})
+
 #define t16(x) ({ \
 	uint16_t __b = (x); \
 	(__LITTLE_ENDIAN==__BYTE_ORDER) ? __b : bswap_16(__b); \
diff --git a/ubifs-utils/common/devtable.c b/ubifs-utils/common/devtable.c
index aa815fbb..2b9c6ef2 100644
--- a/ubifs-utils/common/devtable.c
+++ b/ubifs-utils/common/devtable.c
@@ -45,7 +45,14 @@
  * for more information about what the device table is.
  */
 
-#include "mkfs.ubifs.h"
+#include <string.h>
+#include <ctype.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <sys/sysmacros.h>
+
+#include "devtable.h"
+#include "defs.h"
 #include "hashtable/hashtable.h"
 #include "hashtable/hashtable_itr.h"
 
diff --git a/ubifs-utils/mkfs.ubifs/mkfs.ubifs.h b/ubifs-utils/common/devtable.h
similarity index 53%
rename from ubifs-utils/mkfs.ubifs/mkfs.ubifs.h
rename to ubifs-utils/common/devtable.h
index 56909842..97585f2b 100644
--- a/ubifs-utils/mkfs.ubifs/mkfs.ubifs.h
+++ b/ubifs-utils/common/devtable.h
@@ -20,86 +20,8 @@
  *          Zoltan Sogor
  */
 
-#ifndef __MKFS_UBIFS_H__
-#define __MKFS_UBIFS_H__
-
-#include <unistd.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <limits.h>
-#include <string.h>
-#include <stdint.h>
-#include <endian.h>
-#include <byteswap.h>
-#include <linux/types.h>
-#include <linux/fs.h>
-
-#include <getopt.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/ioctl.h>
-#include <fcntl.h>
-#include <dirent.h>
-#include <errno.h>
-#include <libgen.h>
-#include <ctype.h>
-#include <uuid.h>
-#include <sys/file.h>
-
-#ifdef WITH_CRYPTO
-#include <openssl/rand.h>
-#endif
-
-#include <mtd/ubifs-media.h>
-
-/* common.h requires the PROGRAM_NAME macro */
-#define PROGRAM_NAME "mkfs.ubifs"
-#include "common.h"
-
-#include "libubi.h"
-#include "defs.h"
-#include "crc16.h"
-#include "ubifs.h"
-#include "key.h"
-#include "lpt.h"
-#include "compr.h"
-#include "sign.h"
-
-/*
- * Compression flags are duplicated so that compr.c can compile without ubifs.h.
- * Here we make sure they are the same.
- */
-#if MKFS_UBIFS_COMPR_NONE != UBIFS_COMPR_NONE
-#error MKFS_UBIFS_COMPR_NONE != UBIFS_COMPR_NONE
-#endif
-#if MKFS_UBIFS_COMPR_LZO != UBIFS_COMPR_LZO
-#error MKFS_UBIFS_COMPR_LZO != UBIFS_COMPR_LZO
-#endif
-#if MKFS_UBIFS_COMPR_ZLIB != UBIFS_COMPR_ZLIB
-#error MKFS_UBIFS_COMPR_ZLIB != UBIFS_COMPR_ZLIB
-#endif
-#if MKFS_UBIFS_COMPR_ZSTD != UBIFS_COMPR_ZSTD
-#error MKFS_UBIFS_COMPR_ZSTD != UBIFS_COMPR_ZSTD
-#endif
-
-extern int verbose;
-extern int debug_level;
-
-#define dbg_msg(lvl, fmt, ...) do {if (debug_level >= lvl)                \
-	printf("mkfs.ubifs: %s: " fmt "\n", __FUNCTION__, ##__VA_ARGS__); \
-} while(0)
-
-#define err_msg(fmt, ...) ({                                \
-	fprintf(stderr, "Error: " fmt "\n", ##__VA_ARGS__); \
-	-1;                                                 \
-})
-
-#define sys_err_msg(fmt, ...) ({                                         \
-	int err_ = errno;                                                \
-	fprintf(stderr, "Error: " fmt "\n", ##__VA_ARGS__);              \
-	fprintf(stderr, "       %s (error %d)\n", strerror(err_), err_); \
-	-1;                                                              \
-})
+#ifndef __DEVTABLE_H__
+#define __DEVTABLE_H__
 
 /**
  * struct path_htbl_element - an element of the path hash table.
@@ -136,11 +58,8 @@ struct name_htbl_element {
 	dev_t dev;
 };
 
-extern struct ubifs_info info_;
-
 struct hashtable_itr;
 
-int write_leb(int lnum, int len, void *buf);
 int parse_devtable(const char *tbl_file);
 struct path_htbl_element *devtbl_find_path(const char *path);
 struct name_htbl_element *devtbl_find_name(struct path_htbl_element *ph_elt,
diff --git a/ubifs-utils/common/fscrypt.c b/ubifs-utils/common/fscrypt.c
index b75bdf76..94c6c377 100644
--- a/ubifs-utils/common/fscrypt.c
+++ b/ubifs-utils/common/fscrypt.c
@@ -18,8 +18,12 @@
  *          David Oberhollenzer <david.oberhollenzer@...ma-star.at>
  */
 
+#include <endian.h>
+
 #define PROGRAM_NAME "mkfs.ubifs"
+#include "common.h"
 #include "fscrypt.h"
+#include "defs.h"
 
 
 static __u8 fscrypt_masterkey[FS_MAX_KEY_SIZE];
diff --git a/ubifs-utils/common/fscrypt.h b/ubifs-utils/common/fscrypt.h
index ff3d326b..908a5041 100644
--- a/ubifs-utils/common/fscrypt.h
+++ b/ubifs-utils/common/fscrypt.h
@@ -21,9 +21,11 @@
 #ifndef FSCRYPT_H
 #define FSCRYPT_H
 
-
-#include "mkfs.ubifs.h"
-#include <sys/types.h>
+#ifdef WITH_CRYPTO
+#include <openssl/rand.h>
+#endif
+#include <assert.h>
+#include "ubifs.h"
 #include "crypto.h"
 
 #ifndef FS_KEY_DESCRIPTOR_SIZE
diff --git a/ubifs-utils/common/lpt.c b/ubifs-utils/common/lpt.c
index 7ee739a9..23ffe7f7 100644
--- a/ubifs-utils/common/lpt.c
+++ b/ubifs-utils/common/lpt.c
@@ -20,12 +20,18 @@
  *          Artem Bityutskiy
  */
 
-#include "mkfs.ubifs.h"
-
 #ifdef WITH_CRYPTO
 #include <openssl/evp.h>
 #endif
 
+#define PROGRAM_NAME "mkfs.ubifs"
+#include "common.h"
+#include "lpt.h"
+#include "defs.h"
+#include "ubifs.h"
+#include "crc16.h"
+#include "sign.h"
+
 /**
  * do_calc_lpt_geom - calculate sizes for the LPT area.
  * @c: the UBIFS file-system description object
diff --git a/ubifs-utils/common/lpt.h b/ubifs-utils/common/lpt.h
index 4cde59d9..86148a2a 100644
--- a/ubifs-utils/common/lpt.h
+++ b/ubifs-utils/common/lpt.h
@@ -22,6 +22,8 @@
 #ifndef __UBIFS_LPT_H__
 #define __UBIFS_LPT_H__
 
+#include "ubifs.h"
+
 int calc_dflt_lpt_geom(struct ubifs_info *c, int *main_lebs, int *big_lpt);
 int create_lpt(struct ubifs_info *c);
 
diff --git a/ubifs-utils/common/sign.c b/ubifs-utils/common/sign.c
index 7f284f8e..93399ff7 100644
--- a/ubifs-utils/common/sign.c
+++ b/ubifs-utils/common/sign.c
@@ -17,9 +17,7 @@
  * Author: Sascha Hauer
  */
 
-#include "mkfs.ubifs.h"
-#include "common.h"
-
+#include <string.h>
 #include <openssl/evp.h>
 #include <openssl/opensslv.h>
 #include <openssl/bio.h>
@@ -30,6 +28,11 @@
 #include <openssl/conf.h>
 #include <err.h>
 
+#include "sign.h"
+#include "defs.h"
+#include "ubifs.h"
+
+extern struct ubifs_info info_;
 static struct ubifs_info *c = &info_;
 
 EVP_MD_CTX *hash_md;
diff --git a/ubifs-utils/common/ubifs.h b/ubifs-utils/common/ubifs.h
index 55937cee..0eef31ac 100644
--- a/ubifs-utils/common/ubifs.h
+++ b/ubifs-utils/common/ubifs.h
@@ -25,6 +25,9 @@
 #ifndef __UBIFS_H__
 #define __UBIFS_H__
 
+#include <mtd/ubifs-media.h>
+#include "libubi.h"
+
 /* Maximum logical eraseblock size in bytes */
 #define UBIFS_MAX_LEB_SZ (2*1024*1024)
 
@@ -468,4 +471,6 @@ struct ubifs_branch *ubifs_idx_branch(const struct ubifs_info *c,
 				       (UBIFS_BRANCH_SZ + c->key_len + c->hash_len) * bnum);
 }
 
+int write_leb(int lnum, int len, void *buf);
+
 #endif /* __UBIFS_H__ */
diff --git a/ubifs-utils/mkfs.ubifs/mkfs.ubifs.c b/ubifs-utils/mkfs.ubifs/mkfs.ubifs.c
index b91a3e2d..a440bc4b 100644
--- a/ubifs-utils/mkfs.ubifs/mkfs.ubifs.c
+++ b/ubifs-utils/mkfs.ubifs/mkfs.ubifs.c
@@ -22,10 +22,17 @@
 
 #define _XOPEN_SOURCE 500 /* For realpath() */
 
-#include "mkfs.ubifs.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <libgen.h>
+#include <getopt.h>
+#include <dirent.h>
 #include <crc32.h>
-#include "common.h"
+#include <uuid.h>
+#include <linux/fs.h>
 #include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/ioctl.h>
 #ifdef WITH_XATTR
 #include <sys/xattr.h>
 #endif
@@ -39,8 +46,18 @@
 #include <zstd.h>
 #endif
 
+/* common.h requires the PROGRAM_NAME macro */
+#define PROGRAM_NAME "mkfs.ubifs"
+#include "common.h"
+#include "defs.h"
 #include "crypto.h"
 #include "fscrypt.h"
+#include "ubifs.h"
+#include "lpt.h"
+#include "compr.h"
+#include "key.h"
+#include "sign.h"
+#include "devtable.h"
 
 /* Size (prime number) of hash table for link counting */
 #define HASH_TABLE_SIZE 10099
-- 
2.13.6


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ