From cf0319326a751e4f0e45ac1122d85235bb187b8b Mon Sep 17 00:00:00 2001 From: Jack Jansen Date: Tue, 11 Sep 2001 09:22:19 +0000 Subject: Implemented PyMac_GetFullPathname for MacPython. --- Mac/Python/macglue.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/Mac/Python/macglue.c b/Mac/Python/macglue.c index 9c01fd7..4e8c9e4 100644 --- a/Mac/Python/macglue.c +++ b/Mac/Python/macglue.c @@ -203,7 +203,7 @@ get_folder_parent (FSSpec * fss, FSSpec * parent) /* Given an FSSpec return a full, colon-separated pathname */ OSErr -PyMac_GetFullPath (FSSpec *fss, char *buf) +PyMac_GetFullPathname (FSSpec *fss, char *buf, int length) { short err; FSSpec fss_parent, fss_current; @@ -212,6 +212,10 @@ PyMac_GetFullPath (FSSpec *fss, char *buf) fss_current = *fss; plen = fss_current.name[0]; + if ( plen+2 > length ) { + *buf = 0; + return errFSNameTooLong; + } memcpy(buf, &fss_current.name[1], plen); buf[plen] = 0; /* Special case for disk names */ @@ -222,19 +226,25 @@ PyMac_GetFullPath (FSSpec *fss, char *buf) } while (fss_current.parID > 1) { /* Get parent folder name */ - if (err = get_folder_parent(&fss_current, &fss_parent)) + if (err = get_folder_parent(&fss_current, &fss_parent)) { + *buf = 0; return err; + } fss_current = fss_parent; /* Prepend path component just found to buf */ plen = fss_current.name[0]; if (strlen(buf) + plen + 1 > 1024) { /* Oops... Not enough space (shouldn't happen) */ *buf = 0; - return -1; + return errFSNameTooLong; } memcpy(tmpbuf, &fss_current.name[1], plen); tmpbuf[plen] = ':'; strcpy(&tmpbuf[plen+1], buf); + if ( strlen(tmpbuf) > length ) { + *buf = 0; + return errFSNameTooLong; + } strcpy(buf, tmpbuf); } return 0; -- cgit v0.12