84 lines
3.1 KiB
Diff
84 lines
3.1 KiB
Diff
|
From 8bd3645d7c184ac6a4076414b469ece15fbcccde Mon Sep 17 00:00:00 2001
|
||
|
From: Jim Meyering <meyering@redhat.com>
|
||
|
Date: Mon, 14 Jan 2008 20:01:39 +0100
|
||
|
Subject: [PATCH] Avoid new error detected by very latest gcc.
|
||
|
|
||
|
* libparted/fs/fat/traverse.c (fat_dir_entry_get_name): Don't reference
|
||
|
->extension[3] via a pointer into the prior ->name[8] struct member.
|
||
|
gcc detected the reference beyond end of name[8].
|
||
|
Declare first parameter to be "const".
|
||
|
* libparted/fs/fat/traverse.c: Update prototype.
|
||
|
---
|
||
|
libparted/fs/fat/traverse.c | 18 ++++++++++--------
|
||
|
libparted/fs/fat/traverse.h | 4 ++--
|
||
|
2 files changed, 12 insertions(+), 10 deletions(-)
|
||
|
|
||
|
diff --git a/libparted/fs/fat/traverse.c b/libparted/fs/fat/traverse.c
|
||
|
index 3d2e2b5..367f511 100644
|
||
|
--- a/libparted/fs/fat/traverse.c
|
||
|
+++ b/libparted/fs/fat/traverse.c
|
||
|
@@ -1,6 +1,6 @@
|
||
|
/*
|
||
|
libparted
|
||
|
- Copyright (C) 1998, 1999, 2000, 2005, 2007 Free Software Foundation, Inc.
|
||
|
+ Copyright (C) 1998-2000, 2005, 2007-2008 Free Software Foundation, Inc.
|
||
|
|
||
|
This program is free software; you can redistribute it and/or modify
|
||
|
it under the terms of the GNU General Public License as published by
|
||
|
@@ -340,22 +340,24 @@ fat_dir_entry_has_first_cluster (FatDirEntry* dir_entry, PedFileSystem* fs)
|
||
|
decrypts silly DOS names to FILENAME.EXT
|
||
|
*/
|
||
|
void
|
||
|
-fat_dir_entry_get_name (FatDirEntry*dir_entry, char *result) {
|
||
|
+fat_dir_entry_get_name (const FatDirEntry *dir_entry, char *result) {
|
||
|
int i;
|
||
|
- char *src;
|
||
|
+ const char *src;
|
||
|
+ const char *ext;
|
||
|
|
||
|
src = dir_entry->name;
|
||
|
|
||
|
- for (i=0; i<8; i++) {
|
||
|
+ for (i=0; i < sizeof dir_entry->name; i++) {
|
||
|
if (src[i] == ' ' || src[i] == 0) break;
|
||
|
*result++ = src[i];
|
||
|
}
|
||
|
|
||
|
- if (src[8] != ' ' && src[8] != 0) {
|
||
|
+ ext = (const char *) dir_entry->extension;
|
||
|
+ if (ext[0] != ' ' && ext[0] != 0) {
|
||
|
*result++ = '.';
|
||
|
- for (i=8; i<11; i++) {
|
||
|
- if (src[i] == ' ' || src[i] == 0) break;
|
||
|
- *result++ = src[i];
|
||
|
+ for (i=0; i < sizeof dir_entry->extension; i++) {
|
||
|
+ if (ext[i] == ' ' || ext[i] == 0) break;
|
||
|
+ *result++ = ext[i];
|
||
|
}
|
||
|
}
|
||
|
|
||
|
diff --git a/libparted/fs/fat/traverse.h b/libparted/fs/fat/traverse.h
|
||
|
index 21e4c27..17e4580 100644
|
||
|
--- a/libparted/fs/fat/traverse.h
|
||
|
+++ b/libparted/fs/fat/traverse.h
|
||
|
@@ -1,6 +1,6 @@
|
||
|
/*
|
||
|
libparted
|
||
|
- Copyright (C) 1998, 1999, 2000, 2007 Free Software Foundation, Inc.
|
||
|
+ Copyright (C) 1998, 1999, 2000, 2007-2008 Free Software Foundation, Inc.
|
||
|
|
||
|
This program is free software; you can redistribute it and/or modify
|
||
|
it under the terms of the GNU General Public License as published by
|
||
|
@@ -65,7 +65,7 @@ extern int fat_dir_entry_is_null_term (const FatDirEntry* dir_entry);
|
||
|
extern int fat_dir_entry_is_file (FatDirEntry* dir_entry);
|
||
|
extern int fat_dir_entry_is_system_file (FatDirEntry* dir_entry);
|
||
|
extern int fat_dir_entry_is_directory (FatDirEntry* dir_entry);
|
||
|
-extern void fat_dir_entry_get_name (FatDirEntry* dir_entry, char* result);
|
||
|
+extern void fat_dir_entry_get_name (const FatDirEntry* dir_entry, char* result);
|
||
|
extern int fat_dir_entry_is_active (FatDirEntry* dir_entry);
|
||
|
extern int fat_dir_entry_has_first_cluster (FatDirEntry* dir_entry,
|
||
|
PedFileSystem* fs);
|
||
|
--
|
||
|
1.6.3
|
||
|
|