Mike Breuer wrote:
>
>
> This is one of those examples of using global buffers in a potentially
> dangerous way. Note, that it IS necessary to assign papername and penname
> to something, since they are declared merely as pointers and there is no
> storage behind them. Without starting up the whole global vs. local buffers
> debate again, let me just comment that this is particularly dangerous
> because it is not as obvious that the global buffers are being used in this
> function. I would recommend the following change:
>
> ACMD(do_write)
> {
> struct obj_data *paper, *pen = NULL;
> - char *papername, *penname;
> + char papername[MAX_STRING_LENGTH], penname[MAX_STRING_LENGTH];
>
> - papername = buf1;
> - penname = buf2;
>
> A _quick_ glance at the function didn't show any potential problems with
> this. It looks like papername and penname point to those buffers throughout
> the rest of the function.
Ahhhhhhh I missed that. Would it not be just as wise to
char *penname = NULL, *papername = NULL;
--
+---------------------------------------------------------------+
| FAQ: http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html |
| Archives: http://post.queensu.ca/listserv/wwwarch/circle.html |
+---------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/06/01 PST