From: Przemyslaw Marczak <p.marczak@samsung.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH V2 2/3] lib: uuid: add functions to generate UUID version 4
Date: Thu, 13 Mar 2014 20:51:32 +0100 [thread overview]
Message-ID: <53220C44.7030407@samsung.com> (raw)
In-Reply-To: <20140313191814.GB16360@bill-the-cat>
Hello,
On 03/13/2014 08:18 PM, Tom Rini wrote:
> On Thu, Mar 13, 2014 at 07:41:24PM +0100, Wolfgang Denk wrote:
>> Dear Przemyslaw Marczak,
>>
>> In message <cc0f558724a4d3ea3497b84601038f5f18f37a7b.1394037321.git.p.marczak@samsung.com> you wrote:
>>> This patch adds support to generate UUID (Universally Unique Identifier)
>>> in version 4 based on RFC4122, which is randomly.
>> ...
>>> +struct uuid {
>>> + unsigned int time_low;
>>> + unsigned short time_mid;
>>> + unsigned short time_hi_and_version;
>>> + unsigned char clock_seq_hi_and_reserved;
>>> + unsigned char clock_seq_low;
>>> + unsigned char node[6];
>>> +};
>>
>> This struct starts with an uint, so it requires alignment on a 32 bit
>> boundary (i. e. an address that is a multiple of 4).
>
> And this needs to be marked as packed since we're using this as a direct
> representation of things on-disk.
>
ok, I will add packed attribute.
>>> +void gen_rand_uuid(unsigned char *uuid_bin)
I can change this pointer above to unsigned int.
>>> +{
>>> + struct uuid *uuid = (struct uuid *)uuid_bin;
>>
>> Here you cast a pointer to the (unaligned) character buffer to a
>> struct buffer, which requires alignment.
>
> Potentially unaligned buffer. There's only one caller thus far, and it
> will be aligned there. We do need to comment that the pointer needs to
> be aligned.
>
>>> + unsigned int *ptr = (unsigned int *)uuid_bin;
>>
>>> + /* Set all fields randomly */
>>> + for (i = 0; i < sizeof(struct uuid) / sizeof(*ptr); i++)
>>> + *(ptr + i) = rand();
>>
>> This code is dangerous - if the size of the struct should not be a
>> multiple of sizeof(uint), there would remain uninitialized data.
>
We know that uuid is 16bytes, so change the divider to "4" is better
solution?
> With the struct not packed, it'll be padded out so this works. But
> looking at how we later use this as I say above, we do need to pack it,
> and then this will not be safe. Some looping of strncpy into the char
> buffer, as a char so we whack the rand data in?
>
>>> + /* Set V4 format */
>>> + uuid->time_hi_and_version &= UUID_VERSION_CLEAR_BITS;
>>> + uuid->time_hi_and_version |= UUID_VERSION << UUID_VERSION_SHIFT;
>>
>> Potentially unaligned accesses.
Ok, I change this to clrsetbits.
>
> As-is no (hidden padding), with packed yes-but-handled (compiler can see
> this too, will behave correctly).
>
>
>
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
>
Thanks
--
Przemyslaw Marczak
Samsung R&D Institute Poland
Samsung Electronics
p.marczak at samsung.com
next prev parent reply other threads:[~2014-03-13 19:51 UTC|newest]
Thread overview: 90+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-02-28 15:18 [U-Boot] [PATCH 1/2] lib: uuid: add function to generate UUID version 4 Przemyslaw Marczak
2014-02-28 15:18 ` [U-Boot] [PATCH 2/2] cmd:gpt: randomly generate each partition uuid if undefined Przemyslaw Marczak
2014-02-28 17:03 ` Stephen Warren
2014-03-03 13:45 ` Przemyslaw Marczak
2014-03-03 14:13 ` Tom Rini
2014-03-03 15:31 ` Przemyslaw Marczak
2014-03-03 16:46 ` Tom Rini
2014-03-03 17:23 ` Przemyslaw Marczak
2014-03-03 17:35 ` Tom Rini
2014-03-03 17:58 ` Przemyslaw Marczak
2014-02-28 16:55 ` [U-Boot] [PATCH 1/2] lib: uuid: add function to generate UUID version 4 Stephen Warren
2014-03-03 13:44 ` Przemyslaw Marczak
2014-03-03 17:47 ` Stephen Warren
2014-03-05 16:45 ` [U-Boot] [PATCH V2 1/3] part_efi: move uuid_string() and string_uuid() to lib/uuid.c Przemyslaw Marczak
2014-03-05 16:45 ` [U-Boot] [PATCH V2 2/3] lib: uuid: add functions to generate UUID version 4 Przemyslaw Marczak
2014-03-10 17:37 ` Stephen Warren
2014-03-13 18:10 ` Przemyslaw Marczak
2014-03-13 18:41 ` Wolfgang Denk
2014-03-13 18:41 ` Wolfgang Denk
2014-03-13 19:18 ` Tom Rini
2014-03-13 19:48 ` Wolfgang Denk
2014-03-13 19:55 ` Stephen Warren
2014-03-13 19:51 ` Przemyslaw Marczak [this message]
2014-03-05 16:45 ` [U-Boot] [PATCH V2 3/3] cmd:gpt: randomly generate each partition uuid if undefined Przemyslaw Marczak
2014-03-10 17:44 ` Stephen Warren
2014-03-13 17:28 ` Przemyslaw Marczak
2014-03-13 19:49 ` Stephen Warren
2014-03-13 20:13 ` Przemyslaw Marczak
2014-03-10 17:24 ` [U-Boot] [PATCH V2 1/3] part_efi: move uuid_string() and string_uuid() to lib/uuid.c Stephen Warren
2014-03-10 17:28 ` Tom Rini
2014-03-10 17:52 ` Tom Rini
2014-03-10 17:29 ` Stephen Warren
2014-03-10 17:39 ` Tom Rini
2014-03-14 14:37 ` [U-Boot] [PATCH v3 1/3] part_efi: move uuid<->string conversion functions into lib/uuid.c Przemyslaw Marczak
2014-03-14 14:37 ` [U-Boot] [PATCH v3 2/3] lib: uuid: add functions to generate UUID version 4 Przemyslaw Marczak
2014-03-14 16:12 ` Wolfgang Denk
2014-03-17 9:16 ` Przemyslaw Marczak
2014-03-14 14:37 ` [U-Boot] [PATCH v3 3/3] cmd:gpt: randomly generate each partition uuid if undefined Przemyslaw Marczak
2014-03-14 16:16 ` Wolfgang Denk
2014-03-17 9:17 ` Przemyslaw Marczak
2014-03-14 16:06 ` [U-Boot] [PATCH v3 1/3] part_efi: move uuid<->string conversion functions into lib/uuid.c Wolfgang Denk
2014-03-17 9:15 ` Przemyslaw Marczak
2014-03-19 17:58 ` [U-Boot] [PATCH v4 1/6] " Przemyslaw Marczak
2014-03-19 17:58 ` [U-Boot] [PATCH v4 2/6] lib: uuid: code refactor for proper maintain between uuid bin and string Przemyslaw Marczak
2014-03-19 19:20 ` Wolfgang Denk
2014-03-25 19:12 ` Stephen Warren
2014-03-26 12:00 ` Przemyslaw Marczak
2014-03-26 18:43 ` Stephen Warren
2014-03-19 17:58 ` [U-Boot] [PATCH v4 3/6] lib: uuid: add functions to generate UUID version 4 Przemyslaw Marczak
2014-03-25 19:28 ` Stephen Warren
2014-03-26 12:00 ` Przemyslaw Marczak
2014-03-26 18:47 ` Stephen Warren
2014-03-27 9:17 ` Przemyslaw Marczak
2014-03-19 17:58 ` [U-Boot] [PATCH v4 4/6] new commands: uuid and guid - generate random unique identifier Przemyslaw Marczak
2014-03-25 19:37 ` Stephen Warren
2014-03-26 12:01 ` Przemyslaw Marczak
2014-03-26 18:32 ` Stephen Warren
2014-03-27 9:17 ` Przemyslaw Marczak
2014-03-19 17:58 ` [U-Boot] [PATCH v4 5/6] cmd:gpt: randomly generate each partition uuid if undefined Przemyslaw Marczak
2014-03-25 19:51 ` Stephen Warren
2014-03-26 12:01 ` Przemyslaw Marczak
2014-03-26 18:36 ` Stephen Warren
2014-03-27 9:17 ` Przemyslaw Marczak
2014-03-19 17:58 ` [U-Boot] [PATCH v4 6/6] trats/trats2: enable CONFIG_RANDOM_UUID Przemyslaw Marczak
2014-03-25 19:51 ` Stephen Warren
2014-03-26 12:01 ` Przemyslaw Marczak
2014-03-19 19:19 ` [U-Boot] [PATCH v4 1/6] part_efi: move uuid<->string conversion functions into lib/uuid.c Wolfgang Denk
2014-03-20 8:42 ` Przemyslaw Marczak
2014-03-25 19:03 ` Stephen Warren
2014-04-01 14:30 ` [U-Boot] [PATCH v5 " Przemyslaw Marczak
2014-04-01 14:30 ` [U-Boot] [PATCH v5 2/6] lib: uuid: code refactor for proper maintain between uuid bin and string Przemyslaw Marczak
2014-04-01 14:30 ` [U-Boot] [PATCH v5 3/6] lib: uuid: add functions to generate UUID version 4 Przemyslaw Marczak
2014-04-01 14:30 ` [U-Boot] [PATCH v5 4/6] new commands: uuid and guid - generate random unique identifier Przemyslaw Marczak
2014-04-01 14:30 ` [U-Boot] [PATCH v5 5/6] cmd:gpt: randomly generate each partition uuid if undefined Przemyslaw Marczak
2014-04-01 14:30 ` [U-Boot] [PATCH v5 6/6] trats/trats2: enable CONFIG_RANDOM_UUID Przemyslaw Marczak
2014-04-02 1:28 ` Minkyu Kang
2014-04-02 8:20 ` [U-Boot] [PATCH v6 1/6] part_efi: move uuid<->string conversion functions into lib/uuid.c Przemyslaw Marczak
2014-04-02 8:20 ` [U-Boot] [PATCH v6 2/6] lib: uuid: code refactor for proper maintain between uuid bin and string Przemyslaw Marczak
2014-04-02 21:18 ` [U-Boot] [U-Boot, v6, " Tom Rini
2014-04-02 8:20 ` [U-Boot] [PATCH v6 3/6] lib: uuid: add functions to generate UUID version 4 Przemyslaw Marczak
2014-04-02 8:25 ` Przemyslaw Marczak
2014-04-02 21:18 ` [U-Boot] [U-Boot, v6, " Tom Rini
2014-04-02 8:20 ` [U-Boot] [PATCH v6 4/6] new commands: uuid and guid - generate random unique identifier Przemyslaw Marczak
2014-04-02 21:18 ` [U-Boot] [U-Boot, v6, " Tom Rini
2014-04-02 8:20 ` [U-Boot] [PATCH v6 5/6] cmd:gpt: randomly generate each partition uuid if undefined Przemyslaw Marczak
2014-04-02 21:19 ` [U-Boot] [U-Boot, v6, " Tom Rini
2014-04-02 8:20 ` [U-Boot] [PATCH v6 6/6] trats/trats2: enable CONFIG_RANDOM_UUID Przemyslaw Marczak
2014-04-02 21:19 ` [U-Boot] [U-Boot, v6, " Tom Rini
2014-04-02 21:18 ` [U-Boot] [U-Boot, v6, 1/6] part_efi: move uuid<->string conversion functions into lib/uuid.c Tom Rini
2014-04-03 7:10 ` Przemyslaw Marczak
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=53220C44.7030407@samsung.com \
--to=p.marczak@samsung.com \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox