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: <C1806924-DE57-4FBA-A67C-85C618FE6639@cam.ac.uk>
Date:	Tue, 8 Dec 2009 00:57:27 +0000
From:	Anton Altaparmakov <aia21@....ac.uk>
To:	John Daiker <daikerjohn@...il.com>
Cc:	kernel-janitors@...r.kernel.org,
	linux-ntfs-dev@...ts.sourceforge.net, aia21@...tab.net,
	linux-kernel@...r.kernel.org
Subject: Re: [PATCH] NTFS: Change string pointers to string constants.

Hi,

On 3 Dec 2009, at 02:53, John Daiker wrote:
> As per the KernelJanitors ToDo list, change the following:
> char *foo = "bar";   =>   char foo[] = "bar";

Can you please explain the rational for making this change?  Visually it uses an extra character so I prefer the *string notation rather than the string[] notation.  If there is some actual functional difference then I would like to know what the difference is.

If it is explained in the ToDo list you mention, feel free to post a link to that instead of explaining.

Thanks a lot in advance!

Best regards,

	Anton

> Signed-off-by: John Daiker <daikerjohn@...il.com>
> ---
> fs/ntfs/attrib.c |    2 +-
> fs/ntfs/inode.c  |    6 ++--
> fs/ntfs/mft.c    |    4 +-
> fs/ntfs/super.c  |   60 +++++++++++++++++++++++++++---------------------------
> 4 files changed, 36 insertions(+), 36 deletions(-)
> 
> diff --git a/fs/ntfs/attrib.c b/fs/ntfs/attrib.c
> index 50d3b0c..a8aaa48 100644
> --- a/fs/ntfs/attrib.c
> +++ b/fs/ntfs/attrib.c
> @@ -866,7 +866,7 @@ static int ntfs_external_attr_find(const ATTR_TYPE type,
> 	ntfschar *al_name;
> 	u32 al_name_len;
> 	int err = 0;
> -	static const char *es = " Unmount and run chkdsk.";
> +	static const char es[] = " Unmount and run chkdsk.";
> 
> 	ni = ctx->ntfs_ino;
> 	base_ni = ctx->base_ntfs_ino;
> diff --git a/fs/ntfs/inode.c b/fs/ntfs/inode.c
> index 9938034..e22aa8c 100644
> --- a/fs/ntfs/inode.c
> +++ b/fs/ntfs/inode.c
> @@ -1867,7 +1867,7 @@ int ntfs_read_inode_mount(struct inode *vi)
> 	} else /* if (!err) */ {
> 		ATTR_LIST_ENTRY *al_entry, *next_al_entry;
> 		u8 *al_end;
> -		static const char *es = "  Not allowed.  $MFT is corrupt.  "
> +		static const char es[] = "  Not allowed.  $MFT is corrupt.  "
> 				"You should run chkdsk.";
> 
> 		ntfs_debug("Attribute list attribute found in $MFT.");
> @@ -2328,7 +2328,7 @@ int ntfs_show_options(struct seq_file *sf, struct vfsmount *mnt)
> 
> #ifdef NTFS_RW
> 
> -static const char *es = "  Leaving inconsistent metadata.  Unmount and run "
> +static const char es[] = "  Leaving inconsistent metadata.  Unmount and run "
> 		"chkdsk.";
> 
> /**
> @@ -2364,7 +2364,7 @@ int ntfs_truncate(struct inode *vi)
> 	ntfs_attr_search_ctx *ctx;
> 	MFT_RECORD *m;
> 	ATTR_RECORD *a;
> -	const char *te = "  Leaving file length out of sync with i_size.";
> +	const char te[] = "  Leaving file length out of sync with i_size.";
> 	int err, mp_size, size_change, alloc_change;
> 	u32 attr_len;
> 
> diff --git a/fs/ntfs/mft.c b/fs/ntfs/mft.c
> index 1caa0ef..261a107 100644
> --- a/fs/ntfs/mft.c
> +++ b/fs/ntfs/mft.c
> @@ -408,7 +408,7 @@ void __mark_mft_record_dirty(ntfs_inode *ni)
> 	__mark_inode_dirty(VFS_I(base_ni), I_DIRTY_SYNC | I_DIRTY_DATASYNC);
> }
> 
> -static const char *ntfs_please_email = "Please email "
> +static const char ntfs_please_email[] = "Please email "
> 		"linux-ntfs-dev@...ts.sourceforge.net and say that you saw "
> 		"this message.  Thank you.";
> 
> @@ -1105,7 +1105,7 @@ bool ntfs_may_write_mft_record(ntfs_volume *vol, const unsigned long mft_no,
> 	return true;
> }
> 
> -static const char *es = "  Leaving inconsistent metadata.  Unmount and run "
> +static const char es[] = "  Leaving inconsistent metadata.  Unmount and run "
> 		"chkdsk.";
> 
> /**
> diff --git a/fs/ntfs/super.c b/fs/ntfs/super.c
> index 80b0477..e6dcd71 100644
> --- a/fs/ntfs/super.c
> +++ b/fs/ntfs/super.c
> @@ -461,7 +461,7 @@ static int ntfs_remount(struct super_block *sb, int *flags, char *opt)
> 	 * have occured.
> 	 */
> 	if ((sb->s_flags & MS_RDONLY) && !(*flags & MS_RDONLY)) {
> -		static const char *es = ".  Cannot remount read-write.";
> +		static const char es[] = ".  Cannot remount read-write.";
> 
> 		/* Remounting read-write. */
> 		if (NVolErrors(vol)) {
> @@ -659,7 +659,7 @@ not_ntfs:
> static struct buffer_head *read_ntfs_boot_sector(struct super_block *sb,
> 		const int silent)
> {
> -	const char *read_err_str = "Unable to read %s boot sector.";
> +	const char read_err_str[] = "Unable to read %s boot sector.";
> 	struct buffer_head *bh_primary, *bh_backup;
> 	sector_t nr_blocks = NTFS_SB(sb)->nr_blocks;
> 
> @@ -1768,9 +1768,9 @@ static bool load_system_files(ntfs_volume *vol)
> #ifdef NTFS_RW
> 	/* Get mft mirror inode compare the contents of $MFT and $MFTMirr. */
> 	if (!load_and_init_mft_mirror(vol) || !check_mft_mirror(vol)) {
> -		static const char *es1 = "Failed to load $MFTMirr";
> -		static const char *es2 = "$MFTMirr does not match $MFT";
> -		static const char *es3 = ".  Run ntfsfix and/or chkdsk.";
> +		static const char es1[] = "Failed to load $MFTMirr";
> +		static const char es2[] = "$MFTMirr does not match $MFT";
> +		static const char es3[] = ".  Run ntfsfix and/or chkdsk.";
> 
> 		/* If a read-write mount, convert it to a read-only mount. */
> 		if (!(sb->s_flags & MS_RDONLY)) {
> @@ -1892,11 +1892,11 @@ get_ctx_vol_failed:
> #ifdef NTFS_RW
> 	/* Make sure that no unsupported volume flags are set. */
> 	if (vol->vol_flags & VOLUME_MUST_MOUNT_RO_MASK) {
> -		static const char *es1a = "Volume is dirty";
> -		static const char *es1b = "Volume has been modified by chkdsk";
> -		static const char *es1c = "Volume has unsupported flags set";
> -		static const char *es2a = ".  Run chkdsk and mount in Windows.";
> -		static const char *es2b = ".  Mount in Windows.";
> +		static const char es1a[] = "Volume is dirty";
> +		static const char es1b[] = "Volume has been modified by chkdsk";
> +		static const char es1c[] = "Volume has unsupported flags set";
> +		static const char es2a[] = ".  Run chkdsk and mount in Windows.";
> +		static const char es2b[] = ".  Mount in Windows.";
> 		const char *es1, *es2;
> 
> 		es2 = es2a;
> @@ -1938,9 +1938,9 @@ get_ctx_vol_failed:
> 	rp = NULL;
> 	if (!load_and_check_logfile(vol, &rp) ||
> 			!ntfs_is_logfile_clean(vol->logfile_ino, rp)) {
> -		static const char *es1a = "Failed to load $LogFile";
> -		static const char *es1b = "$LogFile is not clean";
> -		static const char *es2 = ".  Mount in Windows.";
> +		static const char es1a[] = "Failed to load $LogFile";
> +		static const char es1b[] = "$LogFile is not clean";
> +		static const char es2[] = ".  Mount in Windows.";
> 		const char *es1;
> 
> 		es1 = !vol->logfile_ino ? es1a : es1b;
> @@ -1986,10 +1986,10 @@ get_ctx_vol_failed:
> 	 */
> 	err = check_windows_hibernation_status(vol);
> 	if (unlikely(err)) {
> -		static const char *es1a = "Failed to determine if Windows is "
> +		static const char es1a[] = "Failed to determine if Windows is "
> 				"hibernated";
> -		static const char *es1b = "Windows is hibernated";
> -		static const char *es2 = ".  Run chkdsk.";
> +		static const char es1b[] = "Windows is hibernated";
> +		static const char es2[] = ".  Run chkdsk.";
> 		const char *es1;
> 
> 		es1 = err < 0 ? es1a : es1b;
> @@ -2014,9 +2014,9 @@ get_ctx_vol_failed:
> 	/* If (still) a read-write mount, mark the volume dirty. */
> 	if (!(sb->s_flags & MS_RDONLY) &&
> 			ntfs_set_volume_flags(vol, VOLUME_IS_DIRTY)) {
> -		static const char *es1 = "Failed to set dirty bit in volume "
> +		static const char es1[] = "Failed to set dirty bit in volume "
> 				"information flags";
> -		static const char *es2 = ".  Run chkdsk.";
> +		static const char es2[] = ".  Run chkdsk.";
> 
> 		/* Convert to a read-only mount. */
> 		if (!(vol->on_errors & (ON_ERRORS_REMOUNT_RO |
> @@ -2042,8 +2042,8 @@ get_ctx_vol_failed:
> 	 */
> 	if (!(sb->s_flags & MS_RDONLY) && (vol->major_ver > 1) &&
> 			ntfs_set_volume_flags(vol, VOLUME_MOUNTED_ON_NT4)) {
> -		static const char *es1 = "Failed to set NT4 compatibility flag";
> -		static const char *es2 = ".  Run chkdsk.";
> +		static const char es1[] = "Failed to set NT4 compatibility flag";
> +		static const char es2[] = ".  Run chkdsk.";
> 
> 		/* Convert to a read-only mount. */
> 		if (!(vol->on_errors & (ON_ERRORS_REMOUNT_RO |
> @@ -2061,8 +2061,8 @@ get_ctx_vol_failed:
> 	/* If (still) a read-write mount, empty the logfile. */
> 	if (!(sb->s_flags & MS_RDONLY) &&
> 			!ntfs_empty_logfile(vol->logfile_ino)) {
> -		static const char *es1 = "Failed to empty $LogFile";
> -		static const char *es2 = ".  Mount in Windows.";
> +		static const char es1[] = "Failed to empty $LogFile";
> +		static const char es2[] = ".  Mount in Windows.";
> 
> 		/* Convert to a read-only mount. */
> 		if (!(vol->on_errors & (ON_ERRORS_REMOUNT_RO |
> @@ -2101,8 +2101,8 @@ get_ctx_vol_failed:
> #ifdef NTFS_RW
> 	/* Find the quota file, load it if present, and set it up. */
> 	if (!load_and_init_quota(vol)) {
> -		static const char *es1 = "Failed to load $Quota";
> -		static const char *es2 = ".  Run chkdsk.";
> +		static const char es1[] = "Failed to load $Quota";
> +		static const char es2[] = ".  Run chkdsk.";
> 
> 		/* If a read-write mount, convert it to a read-only mount. */
> 		if (!(sb->s_flags & MS_RDONLY)) {
> @@ -2125,8 +2125,8 @@ get_ctx_vol_failed:
> 	/* If (still) a read-write mount, mark the quotas out of date. */
> 	if (!(sb->s_flags & MS_RDONLY) &&
> 			!ntfs_mark_quotas_out_of_date(vol)) {
> -		static const char *es1 = "Failed to mark quotas out of date";
> -		static const char *es2 = ".  Run chkdsk.";
> +		static const char es1[] = "Failed to mark quotas out of date";
> +		static const char es2[] = ".  Run chkdsk.";
> 
> 		/* Convert to a read-only mount. */
> 		if (!(vol->on_errors & (ON_ERRORS_REMOUNT_RO |
> @@ -2145,8 +2145,8 @@ get_ctx_vol_failed:
> 	 * it, and set it up.
> 	 */
> 	if (!load_and_init_usnjrnl(vol)) {
> -		static const char *es1 = "Failed to load $UsnJrnl";
> -		static const char *es2 = ".  Run chkdsk.";
> +		static const char es1[] = "Failed to load $UsnJrnl";
> +		static const char es2[] = ".  Run chkdsk.";
> 
> 		/* If a read-write mount, convert it to a read-only mount. */
> 		if (!(sb->s_flags & MS_RDONLY)) {
> @@ -2168,9 +2168,9 @@ get_ctx_vol_failed:
> 	}
> 	/* If (still) a read-write mount, stamp the transaction log. */
> 	if (!(sb->s_flags & MS_RDONLY) && !ntfs_stamp_usnjrnl(vol)) {
> -		static const char *es1 = "Failed to stamp transaction log "
> +		static const char es1[] = "Failed to stamp transaction log "
> 				"($UsnJrnl)";
> -		static const char *es2 = ".  Run chkdsk.";
> +		static const char es2[] = ".  Run chkdsk.";
> 
> 		/* Convert to a read-only mount. */
> 		if (!(vol->on_errors & (ON_ERRORS_REMOUNT_RO |
-- 
Anton Altaparmakov <aia21 at cam.ac.uk> (replace at with @)
Unix Support, Computing Service, University of Cambridge, CB2 3QH, UK
Linux NTFS maintainer, http://www.linux-ntfs.org/

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ