From owner-freebsd-hackers@FreeBSD.ORG Fri Jun 10 22:40:59 2005 Return-Path: X-Original-To: freebsd-hackers@freebsd.org Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 17CCA16A41C for ; Fri, 10 Jun 2005 22:40:59 +0000 (GMT) (envelope-from mhunter@malcolm.berkeley.edu) Received: from malcolm.berkeley.edu (malcolm.Berkeley.EDU [128.32.206.239]) by mx1.FreeBSD.org (Postfix) with ESMTP id DB28443D1F for ; Fri, 10 Jun 2005 22:40:58 +0000 (GMT) (envelope-from mhunter@malcolm.berkeley.edu) Received: from malcolm.berkeley.edu (localhost [127.0.0.1]) by malcolm.berkeley.edu (8.13.3/8.13.3) with ESMTP id j5AMewbp012085 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Fri, 10 Jun 2005 15:40:58 -0700 (PDT) (envelope-from mhunter@malcolm.berkeley.edu) Received: (from mhunter@localhost) by malcolm.berkeley.edu (8.13.3/8.13.3/Submit) id j5AMewhX012084 for freebsd-hackers@freebsd.org; Fri, 10 Jun 2005 15:40:58 -0700 (PDT) (envelope-from mhunter) Date: Fri, 10 Jun 2005 15:40:58 -0700 From: Mike Hunter To: freebsd-hackers@freebsd.org Message-ID: <20050610224058.GA11336@malcolm.berkeley.edu> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.6i X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-1.6 (malcolm.berkeley.edu [127.0.0.1]); Fri, 10 Jun 2005 15:40:58 -0700 (PDT) Subject: unitialized memory is all zeros...why not garbage instead? X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Jun 2005 22:40:59 -0000 Hey everybody, I have a feeling that I'm missing something really obvious, but I'm having trouble understanding why the following program: #include #include int main (int argc, char * argv[]) { void * ptr = malloc(65536); size_t i; for (i = 0; i < 65536; i++) { printf ("%x", *((unsigned char *)ptr + i)); if ((i % 16) == 0) { puts("\n"); } } return 0; } Never prints anything but "0"'s. I ran less up to my hw.physmem by feeding it /dev/random and watching top, and then ran the program, so I "know" there was tons of non-zero bits in memory. I'm curious because I am worried about information leaks between processes on the same machine...did somebody decide to solve this problem while I wasn't paying attention? :) %gcc -v Using built-in specs. Configured with: FreeBSD/i386 system compiler Thread model: posix gcc version 3.4.2 [FreeBSD] 20040728 %uname -a FreeBSD mylabtop.berkeley.edu 5.4-STABLE FreeBSD 5.4-STABLE #1: Wed May 11 12:05:39 PDT 2005