|
Message-ID: <20120618203514.GW17860@port70.net> Date: Mon, 18 Jun 2012 22:35:14 +0200 From: Szabolcs Nagy <nsz@...t70.net> To: musl@...ts.openwall.com Subject: Re: Silly question about strncpy(), strlen() and related funcs * orc <orc@...server.ru> [2012-06-19 02:54:09 +0800]: > What ALIGN and additional checks like 'if (((uintptr_t)s & ALIGN) == > ((uintptr_t)d & ALIGN))' {...} are mean in src/string/strpcpy.c and > similiar functions? i assume you meant stpncpy.c it checks whether s(ource) and d(estination) pointers have the same alignment relative to word boundaries (uintptr_t)s makes the pointer available for integer arithmetics ALIGN is a bit mask 00..01..11 such that a word aligned pointer has 0 bits where ALIGN has 1s so the expression (uintptr_t)s & ALIGN checks if s is word aligned (eg on 32bit systems a word aligned pointer is a multiple of 4 so it should end with two 0s) (alignment matters because even though the granularity of addressing is 1byte, load/store of >1byte objects can only be done (efficiently) with certain alignment)
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.