Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=0f2cbd38aa377e30df3b7602abed69464d1970aa
Commit:     0f2cbd38aa377e30df3b7602abed69464d1970aa
Parent:     be8a1f7cd4501c3b4b32543577a33aee6d2193ac
Author:     Jean Delvare <[EMAIL PROTECTED]>
AuthorDate: Thu Nov 15 19:24:03 2007 +0100
Committer:  Jean Delvare <[EMAIL PROTECTED]>
CommitDate: Thu Nov 15 19:24:03 2007 +0100

    i2c/eeprom: Hide Sony Vaio serial numbers
    
    The sysfs interface to DMI data takes care to not make the system
    serial number and UUID world-readable, presumably due to privacy
    concerns. For consistency, we should not let the eeprom driver
    export these same strings to the world on Sony Vaio laptops.
    Instead, only make them readable by root, as we already do for BIOS
    passwords.
    
    Signed-off-by: Jean Delvare <[EMAIL PROTECTED]>
---
 drivers/i2c/chips/eeprom.c |   23 +++++++++++++++--------
 1 files changed, 15 insertions(+), 8 deletions(-)

diff --git a/drivers/i2c/chips/eeprom.c b/drivers/i2c/chips/eeprom.c
index d3da1fb..ef8a754 100644
--- a/drivers/i2c/chips/eeprom.c
+++ b/drivers/i2c/chips/eeprom.c
@@ -128,13 +128,20 @@ static ssize_t eeprom_read(struct kobject *kobj, struct 
bin_attribute *bin_attr,
        for (slice = off >> 5; slice <= (off + count - 1) >> 5; slice++)
                eeprom_update_client(client, slice);
 
-       /* Hide Vaio security settings to regular users (16 first bytes) */
-       if (data->nature == VAIO && off < 16 && !capable(CAP_SYS_ADMIN)) {
-               size_t in_row1 = 16 - off;
-               in_row1 = min(in_row1, count);
-               memset(buf, 0, in_row1);
-               if (count - in_row1 > 0)
-                       memcpy(buf + in_row1, &data->data[16], count - in_row1);
+       /* Hide Vaio private settings to regular users:
+          - BIOS passwords: bytes 0x00 to 0x0f
+          - UUID: bytes 0x10 to 0x1f
+          - Serial number: 0xc0 to 0xdf */
+       if (data->nature == VAIO && !capable(CAP_SYS_ADMIN)) {
+               int i;
+
+               for (i = 0; i < count; i++) {
+                       if ((off + i <= 0x1f) ||
+                           (off + i >= 0xc0 && off + i <= 0xdf))
+                               buf[i] = 0;
+                       else
+                               buf[i] = data->data[off + i];
+               }
        } else {
                memcpy(buf, &data->data[off], count);
        }
@@ -204,7 +211,7 @@ static int eeprom_detect(struct i2c_adapter *adapter, int 
address, int kind)
                 && i2c_smbus_read_byte(new_client) == 'G'
                 && i2c_smbus_read_byte(new_client) == '-') {
                        dev_info(&new_client->dev, "Vaio EEPROM detected, "
-                               "enabling password protection\n");
+                                "enabling privacy protection\n");
                        data->nature = VAIO;
                }
        }
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to